ਰੀਅਲ-ਟਾਈਮ ਟੇਬਲਾਂ ਵਿੱਚ jQuery ਖੋਜ ਫਿਲਟਰ ਸਮੱਸਿਆਵਾਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ
ਰੀਅਲ-ਟਾਈਮ ਵਿੱਚ ਡਾਟਾ ਫਿਲਟਰ ਕਰਨਾ ਇੱਕ ਜ਼ਰੂਰੀ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ ਜਦੋਂ ਡਾਇਨਾਮਿਕ ਟੇਬਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ jQuery ਇਸ ਕਾਰਜਸ਼ੀਲਤਾ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦਾ ਇੱਕ ਸਧਾਰਨ ਤਰੀਕਾ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਪ੍ਰਦਾਨ ਕੀਤੀ ਗਈ ਉਦਾਹਰਨ ਵਿੱਚ, ਟੀਚਾ ਉਪਭੋਗਤਾ ਦੀ ਪੁੱਛਗਿੱਛ ਦੇ ਆਧਾਰ 'ਤੇ ਇੱਕ ਸਾਰਣੀ ਦੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਨ ਲਈ ਖੋਜ ਇਨਪੁਟ ਖੇਤਰ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੈ। ਸਮੱਸਿਆ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਇੱਕ ਸਪਸ਼ਟ ਬਟਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਖੋਜ ਇੰਪੁੱਟ ਨੂੰ ਇੱਕ ਖਾਲੀ ਮੁੱਲ ਤੇ ਰੀਸੈਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਪਰ ਸਾਰਣੀ ਸਮੱਗਰੀ ਉਸ ਅਨੁਸਾਰ ਅੱਪਡੇਟ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।
ਆਮ ਤੌਰ 'ਤੇ, ਖੋਜ ਇੰਪੁੱਟ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਨਾਲ ਸਾਰੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਦਿਖਾਉਣ ਲਈ ਸਾਰਣੀ ਨੂੰ ਟਰਿੱਗਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਮੌਜੂਦਾ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਵਿੱਚ, ਭਾਵੇਂ ਕਿ ਇਨਪੁਟ ਖੇਤਰ ਸਾਫ਼ ਹੋ ਗਿਆ ਹੈ, ਫਿਲਟਰ ਕੀਤੀਆਂ ਕਤਾਰਾਂ ਵਿੱਚ ਕੋਈ ਬਦਲਾਅ ਨਹੀਂ ਹੈ। ਇਹ ਵਿਵਹਾਰ ਉਲਝਣ ਪੈਦਾ ਕਰਕੇ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨੂੰ ਵਿਗਾੜ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਇੰਟਰਫੇਸ ਖੋਜ ਮਾਪਦੰਡ ਰੀਸੈਟ ਕਰਨ ਤੋਂ ਬਾਅਦ ਉਮੀਦ ਅਨੁਸਾਰ ਵਿਹਾਰ ਨਹੀਂ ਕਰਦਾ ਹੈ।
ਸਮੱਸਿਆ ਸੰਭਾਵਤ ਤੌਰ 'ਤੇ ਕੀਅਪ ਇਵੈਂਟ ਅਤੇ ਬਟਨ ਕਲਿੱਕ ਇਵੈਂਟ ਵਿਚਕਾਰ ਆਪਸੀ ਤਾਲਮੇਲ ਤੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ। ਜਦੋਂ ਕਿ ਸਾਫ਼ ਬਟਨ ਸਫਲਤਾਪੂਰਵਕ ਇਨਪੁਟ ਖੇਤਰ ਨੂੰ ਖਾਲੀ ਕਰ ਦਿੰਦਾ ਹੈ, ਸਕ੍ਰਿਪਟ ਫਿਲਟਰਿੰਗ ਤਰਕ ਨੂੰ ਮੁੜ-ਟਰਿੱਗਰ ਨਹੀਂ ਕਰ ਸਕਦੀ, ਸਾਰਣੀ ਨੂੰ ਇਸਦੀ ਪਿਛਲੀ ਸਥਿਤੀ ਵਿੱਚ ਛੱਡਦੀ ਹੈ। ਇਹ ਸਮਝਣਾ ਕਿ ਇਹ ਘਟਨਾਵਾਂ jQuery ਵਿੱਚ ਕਿਵੇਂ ਵਿਹਾਰ ਕਰਦੀਆਂ ਹਨ ਅਜਿਹੇ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਵਿਸਤਾਰ ਵਿੱਚ ਸਮੱਸਿਆ ਦੀ ਪੜਚੋਲ ਕਰਾਂਗੇ, ਇਹ ਕਿਉਂ ਵਾਪਰਦਾ ਹੈ ਇਸ ਬਾਰੇ ਸਮਝ ਪ੍ਰਦਾਨ ਕਰਾਂਗੇ, ਅਤੇ ਇੱਕ ਸ਼ੁੱਧ ਹੱਲ ਪੇਸ਼ ਕਰਾਂਗੇ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਖੋਜ ਇਨਪੁਟ ਫੀਲਡ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਤੋਂ ਬਾਅਦ ਵੀ, ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਦਾ ਹੈ। ਕੁਝ ਟਵੀਕਸ ਦੇ ਨਾਲ, ਤੁਹਾਡਾ ਖੋਜ ਫਿਲਟਰ ਹਰ ਵਾਰ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਖੋਜ ਨੂੰ ਰੀਸੈਟ ਕਰਨ 'ਤੇ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਅੱਪਡੇਟ ਹੋ ਜਾਵੇਗਾ।
| ਹੁਕਮ | ਵਰਤੋਂ ਅਤੇ ਵਰਣਨ ਦੀ ਉਦਾਹਰਨ |
|---|---|
| filter() | jQuery ਵਿੱਚ ਐਲੀਮੈਂਟਸ ਨੂੰ ਦੁਹਰਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਸ਼ਰਤ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। $("#Data tr").filter(function() {...}); ਵਰਣਨ: ਖੋਜ ਇਨਪੁਟ ਦੇ ਆਧਾਰ 'ਤੇ ਸਾਰਣੀ ਦੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਦਾ ਹੈ, ਸਿਰਫ਼ ਇਨਪੁਟ ਨਾਲ ਮੇਲ ਖਾਂਦੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਦਿਖਾਉਂਦੀਆਂ ਹਨ। |
| toggle() | ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਤੱਤਾਂ ਦੀ ਡਿਸਪਲੇ ਸਥਿਤੀ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦਾ ਹੈ। $(ਇਹ) ਟੌਗਲ(ਸਥਿਤੀ); ਵਰਣਨ: ਖੋਜ ਸ਼ਬਦ ਲੱਭਿਆ ਹੈ ਜਾਂ ਨਹੀਂ ਇਸ ਦੇ ਆਧਾਰ 'ਤੇ ਕਤਾਰ ਦੀ ਦਿੱਖ ਨੂੰ ਟੌਗਲ ਕਰਦਾ ਹੈ। |
| dispatchEvent() | ਕਿਸੇ ਤੱਤ 'ਤੇ ਇੱਕ ਇਵੈਂਟ ਨੂੰ ਦਸਤੀ ਟ੍ਰਿਗਰ ਕਰਦਾ ਹੈ। searchInput.dispatchEvent(ਨਵਾਂ ਇਵੈਂਟ("ਇਨਪੁਟ")); ਵਰਣਨ: ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਖੋਜ ਤਰਕ ਇਨਪੁਟ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਤੋਂ ਬਾਅਦ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਤੌਰ 'ਤੇ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਹੈ। |
| addEventListener() | ਵਨੀਲਾ JavaScript ਵਿੱਚ ਇੱਕ ਤੱਤ ਨਾਲ ਇੱਕ ਇਵੈਂਟ ਹੈਂਡਲਰ ਨੱਥੀ ਕਰਦਾ ਹੈ। clearButton.addEventListener("ਕਲਿੱਕ", ਫੰਕਸ਼ਨ() {...}); ਵਰਣਨ: ਇਨਪੁਟ ਫੀਲਡ ਨੂੰ ਰੀਸੈਟ ਕਰਨ ਅਤੇ ਫਿਲਟਰ ਨੂੰ ਰਿਫ੍ਰੈਸ਼ ਕਰਨ ਲਈ ਸਾਫ਼ ਬਟਨ ਕਲਿੱਕ ਲਈ ਸੁਣਦਾ ਹੈ। |
| querySelectorAll() | CSS ਚੋਣਕਾਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਸਾਰੇ ਮੇਲ ਖਾਂਦੇ ਤੱਤਾਂ ਨੂੰ ਚੁਣਦਾ ਹੈ। const rows = document.querySelectorAll("#Data tr"); ਵਰਣਨ: ਫਿਲਟਰਿੰਗ ਤਰਕ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਸਾਰਣੀ ਤੋਂ ਸਾਰੀਆਂ ਕਤਾਰਾਂ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। |
| module.exports | Node.js ਜਾਂ JavaScript ਮੋਡੀਊਲ ਵਿੱਚ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਨਿਰਯਾਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। module.exports = { filterTable }; ਵਰਣਨ: ਫਿਲਟਰਿੰਗ ਤਰਕ ਨੂੰ ਨਿਰਯਾਤ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਇਸਨੂੰ ਕਈ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਵਰਤਿਆ ਜਾ ਸਕੇ। |
| beforeEach() | ਇੱਕ ਜੈਸਮੀਨ ਟੈਸਟ ਫੰਕਸ਼ਨ ਜੋ ਹਰੇਕ ਟੈਸਟ ਕੇਸ ਤੋਂ ਪਹਿਲਾਂ ਸੈੱਟਅੱਪ ਕੋਡ ਚਲਾਉਂਦਾ ਹੈ। beforeEach(ਫੰਕਸ਼ਨ() {...}); ਵਰਣਨ: ਨਵੀਂ ਸ਼ੁਰੂਆਤ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਹਰੇਕ ਯੂਨਿਟ ਟੈਸਟ ਤੋਂ ਪਹਿਲਾਂ DOM ਤੱਤ ਤਿਆਰ ਕਰਦਾ ਹੈ। |
| textContent | ਕਿਸੇ ਤੱਤ ਦੀ ਟੈਕਸਟ ਸਮੱਗਰੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। row.textContent.toLowerCase(); ਵਰਣਨ: ਫਿਲਟਰਿੰਗ ਦੌਰਾਨ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਤੁਲਨਾ ਲਈ ਕਤਾਰ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਦਾ ਹੈ। |
| expect() | ਟੈਸਟਾਂ ਵਿੱਚ ਸੰਭਾਵਿਤ ਨਤੀਜਿਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਇੱਕ ਜੈਸਮੀਨ ਦਾਅਵਾ ਵਿਧੀ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। expect(row.style.display).toBe(""); ਵਰਣਨ: ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ ਕਿ ਫਿਲਟਰਿੰਗ ਤਰਕ ਇਰਾਦੇ ਅਨੁਸਾਰ ਕਤਾਰਾਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਾਂ ਓਹਲੇ ਕਰਦਾ ਹੈ। |
| DOMContentLoaded | ਇੱਕ JavaScript ਇਵੈਂਟ ਉਦੋਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਸ਼ੁਰੂਆਤੀ HTML ਦਸਤਾਵੇਜ਼ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਹੁੰਦਾ ਹੈ। document.addEventListener("DOMContentLoaded", function() {...}); ਵਰਣਨ: ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਕ੍ਰਿਪਟ ਸਿਰਫ DOM ਦੇ ਤਿਆਰ ਹੋਣ ਤੋਂ ਬਾਅਦ ਚੱਲਦੀ ਹੈ। |
jQuery ਅਤੇ JavaScript ਵਿੱਚ ਨਿਰਵਿਘਨ ਖੋਜ ਫਿਲਟਰਿੰਗ ਅਤੇ ਕਲੀਅਰਿੰਗ ਨੂੰ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾਵੇ
ਪਹਿਲੀ ਸਕਰਿਪਟ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਡਾਇਨਾਮਿਕ ਲਾਗੂ ਕੀਤਾ ਹੈ jQuery ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ. ਤਰਕ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ ਇਨਪੁਟ ਖੇਤਰ ਦੀ ਘਟਨਾ, ਜੋ ਹਰ ਵਾਰ ਉਪਭੋਗਤਾ ਟਾਈਪ ਕਰਨ 'ਤੇ ਟਰਿੱਗਰ ਕਰਦੀ ਹੈ। ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਮੈਚਿੰਗ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਇਨਪੁਟ ਮੁੱਲ ਨੂੰ ਛੋਟੇ ਅੱਖਰਾਂ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਹਰੇਕ ਸਾਰਣੀ ਕਤਾਰ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਕੀ ਇਸ ਵਿੱਚ ਖੋਜ ਸ਼ਬਦ ਸ਼ਾਮਲ ਹੈ, ਅਤੇ ਕਤਾਰਾਂ ਨੂੰ ਇਸ ਅਨੁਸਾਰ ਟੌਗਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਫੰਕਸ਼ਨ. ਇਹ ਸਿਰਫ਼ ਮੇਲ ਖਾਂਦੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਹੀ ਦਿਸਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਵੱਡੀਆਂ ਟੇਬਲਾਂ ਵਿੱਚ ਖਾਸ ਡਾਟਾ ਲੱਭਣਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ।
ਹਾਲਾਂਕਿ, ਇੱਕ ਸਪਸ਼ਟ ਬਟਨ ਨਾਲ ਖੋਜ ਨੂੰ ਰੀਸੈਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਸਮੱਸਿਆ ਪੈਦਾ ਹੁੰਦੀ ਹੈ। ਅਸਲ ਸਕ੍ਰਿਪਟ ਵਿੱਚ, ਸਾਫ਼ ਬਟਨ ਇਨਪੁਟ ਖੇਤਰ ਨੂੰ ਇੱਕ ਖਾਲੀ ਸਤਰ ਵਿੱਚ ਸੈੱਟ ਕਰਦਾ ਹੈ ਪਰ ਖੋਜ ਅੱਪਡੇਟ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਟਰਿੱਗਰ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਵਿਸਤ੍ਰਿਤ ਹੱਲ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਪਸ਼ਟ ਬਟਨ ਦਬਾਏ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਕੀਅਪ ਇਵੈਂਟ ਨੂੰ ਹੱਥੀਂ ਰੀ-ਟਰਿੱਗਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਵਿਧੀ, ਜੋ ਸਾਰੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਦੁਬਾਰਾ ਦਿਖਾ ਕੇ ਸਾਰਣੀ ਦ੍ਰਿਸ਼ ਨੂੰ ਅੱਪਡੇਟ ਕਰਦੀ ਹੈ। ਇਹ ਵਿਧੀ ਨਿਰਵਿਘਨ ਕਾਰਜਸ਼ੀਲਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਅਤੇ ਜਦੋਂ ਖੋਜ ਖੇਤਰ ਨੂੰ ਖਾਲੀ ਕਰਨ ਲਈ ਰੀਸੈਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਉਲਝਣ ਤੋਂ ਬਚਦਾ ਹੈ।
ਦੂਜੀ ਉਦਾਹਰਨ jQuery ਨੂੰ ਸਾਦੇ JavaScript ਨਾਲ ਬਦਲ ਕੇ ਇੱਕ ਵਿਕਲਪਿਕ ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। ਅਸੀਂ ਇੱਕ ਨੂੰ ਜੋੜ ਕੇ ਸਮਾਨ ਕਾਰਜਸ਼ੀਲਤਾ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ ਖੋਜ ਖੇਤਰ ਵਿੱਚ ਇਵੈਂਟ ਲਿਸਨਰ ਅਤੇ ਕਤਾਰਾਂ ਨੂੰ ਸਿੱਧੇ ਨਾਲ ਅੱਪਡੇਟ ਕਰਨਾ . ਵਨੀਲਾ JavaScript ਦੀ ਵਰਤੋਂ ਬਾਹਰੀ ਲਾਇਬ੍ਰੇਰੀਆਂ 'ਤੇ ਨਿਰਭਰਤਾ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਸੁਧਾਰਦੀ ਹੈ। ਕਲੀਅਰ ਬਟਨ, ਜਦੋਂ ਕਲਿੱਕ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਾ ਸਿਰਫ਼ ਖੋਜ ਖੇਤਰ ਨੂੰ ਸਾਫ਼ ਕਰਦਾ ਹੈ ਬਲਕਿ ਫਿਲਟਰਿੰਗ ਤਰਕ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਲਈ ਇੱਕ ਨਵਾਂ ਇਵੈਂਟ ਵੀ ਭੇਜਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਾਰਣੀ ਸਮੱਗਰੀ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਤਾਜ਼ਾ ਕੀਤਾ ਜਾਵੇ।
ਮਾਡਿਊਲਰ ਉਦਾਹਰਨ ਮੁੱਖ ਸਕ੍ਰਿਪਟ ਤੋਂ ਖੋਜ ਤਰਕ ਨੂੰ ਵੱਖ ਕਰਨ ਲਈ ES6 ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ। ਇਹ ਪਹੁੰਚ ਇੱਕ ਵੱਖਰੀ ਫਾਈਲ ਵਿੱਚ ਫਿਲਟਰਿੰਗ ਫੰਕਸ਼ਨ ਰੱਖ ਕੇ ਕੋਡ ਦੀ ਮੁੜ ਵਰਤੋਂਯੋਗਤਾ ਅਤੇ ਰੱਖ-ਰਖਾਅਯੋਗਤਾ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦੀ ਹੈ। ਅਸੀਂ ਇਹ ਵੀ ਦਿਖਾਇਆ ਕਿ ਖੋਜ ਅਤੇ ਸਪਸ਼ਟ ਕਾਰਜਸ਼ੀਲਤਾਵਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਜੈਸਮੀਨ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟ ਕਿਵੇਂ ਲਿਖਣੇ ਹਨ। ਇਹ ਟੈਸਟ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਖੋਜ ਸਹੀ ਢੰਗ ਨਾਲ ਕਤਾਰਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ ਅਤੇ ਇੰਪੁੱਟ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਨਾਲ ਸਾਰੀਆਂ ਕਤਾਰਾਂ ਨੂੰ ਬਹਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਮਾਡਿਊਲਰਿਟੀ, ਯੂਨਿਟ ਟੈਸਟਾਂ, ਅਤੇ ਅਨੁਕੂਲਿਤ ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਦੇ ਨਾਲ, ਹੱਲ ਵੱਖ-ਵੱਖ ਵੈਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਵਰਤਣ ਲਈ ਮਜ਼ਬੂਤ ਅਤੇ ਸਕੇਲੇਬਲ ਬਣ ਜਾਂਦਾ ਹੈ।
ਮਲਟੀਪਲ ਪਹੁੰਚਾਂ ਨਾਲ jQuery ਟੇਬਲ ਫਿਲਟਰ ਰੀਸੈਟ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨਾ
ਫਰੰਟ-ਐਂਡ ਡਾਇਨਾਮਿਕ ਟੇਬਲ ਫਿਲਟਰਿੰਗ ਅਤੇ ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਲਈ jQuery ਦੀ ਵਰਤੋਂ ਕਰਨਾ
$(document).ready(function() {$("#SearchInput").on("keyup", function() {var value = $(this).val().toLowerCase();$("#Data tr").filter(function() {$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);});});$("#clearSearch").click(function() {$("#SearchInput").val("");$("#SearchInput").trigger("keyup"); // Ensure search updates on clear});});
ਵਨੀਲਾ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਇਵੈਂਟ-ਡਰਾਇਵ ਲਾਜਿਕ ਦੇ ਨਾਲ ਕਲੀਅਰ ਬਟਨ ਨੂੰ ਲਾਗੂ ਕਰਨਾ
jQuery ਤੋਂ ਬਿਨਾਂ ਉਹੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਧਾਰਨ JavaScript ਦੀ ਵਰਤੋਂ ਕਰਨਾ
document.addEventListener("DOMContentLoaded", function() {const searchInput = document.getElementById("SearchInput");const clearButton = document.getElementById("clearSearch");const rows = document.querySelectorAll("#Data tr");searchInput.addEventListener("input", function() {const value = searchInput.value.toLowerCase();rows.forEach(row => {row.style.display = row.textContent.toLowerCase().includes(value) ? "" : "none";});});clearButton.addEventListener("click", function() {searchInput.value = "";searchInput.dispatchEvent(new Event("input")); // Trigger filtering});});
ES6 ਮੋਡੀਊਲ ਦੇ ਨਾਲ ਇੱਕ ਮਾਡਯੂਲਰ ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਗਤੀਸ਼ੀਲ ਖੋਜ ਫਿਲਟਰਾਂ ਨੂੰ ਸੰਭਾਲਣਾ
ਬਿਹਤਰ ਕੋਡ ਦੀ ਮੁੜ ਵਰਤੋਂ ਲਈ ਨਿਰਯਾਤਯੋਗ ਫੰਕਸ਼ਨਾਂ ਦੇ ਨਾਲ ਮਾਡਿਊਲਰ JavaScript
// searchFilter.js - Search filtering logic as an ES6 moduleexport function filterTable(inputId, tableId) {const input = document.getElementById(inputId);const rows = document.querySelectorAll(`#${tableId} tr`);input.addEventListener("input", () => {const query = input.value.toLowerCase();rows.forEach(row => {row.style.display = row.textContent.toLowerCase().includes(query) ? "" : "none";});});}// main.js - Importing and using the filter logicimport { filterTable } from "./searchFilter.js";document.addEventListener("DOMContentLoaded", () => {filterTable("SearchInput", "Data");document.getElementById("clearSearch").addEventListener("click", () => {document.getElementById("SearchInput").value = "";document.getElementById("SearchInput").dispatchEvent(new Event("input"));});});
ਜੈਸਮੀਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟਾਂ ਨਾਲ ਖੋਜ ਅਤੇ ਸਪਸ਼ਟ ਕਾਰਜਸ਼ੀਲਤਾ ਦੀ ਜਾਂਚ ਕਰਨਾ
ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਜੈਸਮੀਨ ਟੈਸਟਿੰਗ ਫਰੇਮਵਰਕ
describe("Search and Clear Functionality", function() {beforeEach(function() {document.body.innerHTML = `<input type="text" id="SearchInput" /><button id="clearSearch">Clear</button><table id="Data"><tr><td>Row 1</td></tr><tr><td>Row 2</td></tr></table>`;require("./searchFilter.js").filterTable("SearchInput", "Data");});it("should filter rows based on search input", function() {document.getElementById("SearchInput").value = "Row 1";document.getElementById("SearchInput").dispatchEvent(new Event("input"));expect(document.querySelector("#Data tr").style.display).toBe("");});it("should clear search input and show all rows", function() {document.getElementById("clearSearch").click();expect(document.getElementById("SearchInput").value).toBe("");expect(document.querySelectorAll("#Data tr").length).toBe(2);});});
ਡਾਇਨਾਮਿਕ ਫਿਲਟਰਾਂ ਲਈ ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਰੀਅਲ-ਟਾਈਮ ਅਪਡੇਟਸ ਦੀ ਪੜਚੋਲ ਕਰਨਾ
ਇੱਕ ਪਹਿਲੂ ਜਿਸ ਬਾਰੇ ਪਹਿਲਾਂ ਚਰਚਾ ਨਹੀਂ ਕੀਤੀ ਗਈ ਸੀ ਉਹ ਹੈ ਕੁਸ਼ਲਤਾ ਦੀ ਮਹੱਤਤਾ ਖੋਜ ਫਿਲਟਰਾਂ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ JavaScript ਵਿੱਚ. ਉਪਭੋਗਤਾ ਇੰਪੁੱਟ ਨਾਲ ਨਜਿੱਠਣ ਵੇਲੇ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਇਵੈਂਟਸ ਵਰਗੇ ਜਾਂ ਅਨੁਕੂਲਿਤ ਹਨ ਇੱਕ ਨਿਰਵਿਘਨ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਜੇਕਰ ਇੱਕ ਤੋਂ ਵੱਧ ਇਵੈਂਟ ਸੁਣਨ ਵਾਲੇ ਗਲਤ ਜਾਂ ਬੇਲੋੜੇ ਤੌਰ 'ਤੇ ਜੁੜੇ ਹੋਏ ਹਨ, ਤਾਂ ਇਸਦੇ ਨਤੀਜੇ ਵਜੋਂ ਪ੍ਰਦਰਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਖਾਸ ਕਰਕੇ ਵੱਡੇ ਡੇਟਾਸੈਟਾਂ ਦੇ ਨਾਲ। ਸੈਂਕੜੇ ਜਾਂ ਹਜ਼ਾਰਾਂ ਟੇਬਲ ਕਤਾਰਾਂ ਵਾਲੇ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ, ਖੋਜ ਅਤੇ ਸਪਸ਼ਟ ਕਾਰਜਕੁਸ਼ਲਤਾਵਾਂ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ ਜ਼ਰੂਰੀ ਹੋ ਜਾਂਦਾ ਹੈ।
ਇੱਕ ਹੋਰ ਵਿਚਾਰ ਵਰਤ ਰਿਹਾ ਹੈ ਉਪਭੋਗਤਾ ਦੇ ਕੀਸਟ੍ਰੋਕ ਦੁਆਰਾ ਸ਼ੁਰੂ ਕੀਤੇ ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਦੀ ਬਾਰੰਬਾਰਤਾ ਨੂੰ ਘਟਾਉਣ ਲਈ। ਡੀਬਾਊਂਸਿੰਗ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇੱਕ ਫੰਕਸ਼ਨ ਸਿਰਫ਼ ਉਦੋਂ ਹੀ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਉਪਭੋਗਤਾ ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮੇਂ ਲਈ ਟਾਈਪ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਖੋਜ ਫਿਲਟਰਾਂ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਉਹਨਾਂ ਵਿੱਚ ਗੁੰਝਲਦਾਰ ਤਰਕ ਜਾਂ ਨੈੱਟਵਰਕ ਬੇਨਤੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ। ਖੋਜ ਇਨਪੁਟ 'ਤੇ ਡੀਬਾਊਂਸ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਬੇਲੋੜੇ DOM ਅੱਪਡੇਟ ਨੂੰ ਘੱਟ ਕਰਕੇ ਉਪਯੋਗਤਾ ਅਤੇ ਕੁਸ਼ਲਤਾ ਦੋਵਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ।
ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤੀਆਂ ਟੇਬਲਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਵਾਲੇ ਡਿਵੈਲਪਰਾਂ ਲਈ, ਇੱਕ ਆਮ ਚੁਣੌਤੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਹੈ ਕਿ ਨਵੀਆਂ ਕਤਾਰਾਂ ਜੋੜਨ ਤੋਂ ਬਾਅਦ ਵੀ ਫਿਲਟਰਿੰਗ ਕੰਮ ਕਰਦੀ ਹੈ। ਇਸ ਲਈ ਇਵੈਂਟ ਸਰੋਤਿਆਂ ਨੂੰ ਦੁਬਾਰਾ ਜੋੜਨ ਜਾਂ ਮਾਤਾ-ਪਿਤਾ ਤੱਤ ਦੁਆਰਾ ਡੈਲੀਗੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਵੈਂਟ ਡੈਲੀਗੇਸ਼ਨ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਇਵੈਂਟ ਅਜੇ ਵੀ ਤਬਦੀਲੀਆਂ ਨੂੰ ਕੈਪਚਰ ਕਰਦਾ ਹੈ ਭਾਵੇਂ ਕਤਾਰਾਂ ਨੂੰ ਸਕ੍ਰਿਪਟ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਨੂੰ ਮਾਡਿਊਲਰ JavaScript ਅਤੇ ਜਾਂਚ ਲਈ ਜੈਸਮੀਨ ਵਰਗੇ ਫਰੇਮਵਰਕ ਨਾਲ ਜੋੜਨਾ ਇੱਕ ਮਜ਼ਬੂਤ ਹੱਲ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਵੱਖ-ਵੱਖ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।
- ਮੈਂ ਇਹ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾ ਸਕਦਾ ਹਾਂ ਕਿ ਖੋਜ ਫਿਲਟਰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਜੋੜੀਆਂ ਗਈਆਂ ਕਤਾਰਾਂ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ?
- ਵਰਤੋ ਨੂੰ ਜੋੜ ਕੇ ਕਤਾਰਾਂ ਦੇ ਇੱਕ ਮੂਲ ਤੱਤ ਲਈ ਇਵੈਂਟ। ਇਸ ਤਰ੍ਹਾਂ, ਇਵੈਂਟ ਨਵੀਆਂ ਜੋੜੀਆਂ ਗਈਆਂ ਕਤਾਰਾਂ ਲਈ ਵੀ ਟਰਿੱਗਰ ਹੋ ਜਾਵੇਗਾ।
- ਵਿਚਕਾਰ ਕੀ ਫਰਕ ਹੈ ਅਤੇ ਘਟਨਾਵਾਂ?
- ਦ ਇੱਕ ਕੁੰਜੀ ਦੇ ਜਾਰੀ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਘਟਨਾ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਈਵੈਂਟ ਪੇਸਟ ਇਵੈਂਟਾਂ ਅਤੇ ਅੱਖਰ ਮਿਟਾਉਣ ਸਮੇਤ, ਇਨਪੁਟ ਵਿੱਚ ਕਿਸੇ ਵੀ ਤਬਦੀਲੀ ਲਈ ਟਰਿੱਗਰ ਕਰਦਾ ਹੈ।
- ਮੈਂ ਵੱਡੇ ਡੇਟਾਸੇਟਾਂ ਨਾਲ ਖੋਜ ਫਿਲਟਰ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਕਿਵੇਂ ਸੁਧਾਰ ਸਕਦਾ ਹਾਂ?
- ਲਾਗੂ ਕਰੋ ਟਾਈਪਿੰਗ ਦੌਰਾਨ ਫਿਲਟਰ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕੀਤੇ ਜਾਣ ਦੀ ਗਿਣਤੀ ਨੂੰ ਘਟਾਉਣ ਲਈ ਖੋਜ ਇੰਪੁੱਟ 'ਤੇ.
- ਕੀ ਇੱਕ ਸਾਰਣੀ ਦੇ ਕਈ ਕਾਲਮਾਂ 'ਤੇ ਖੋਜ ਫਿਲਟਰ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸੰਭਵ ਹੈ?
- ਹਾਂ, ਤੁਸੀਂ ਮਲਟੀਪਲ ਚੈੱਕ ਕਰਨ ਲਈ ਫਿਲਟਰ ਤਰਕ ਨੂੰ ਸੋਧ ਸਕਦੇ ਹੋ ਖੋਜ ਮਾਪਦੰਡ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਹਰੇਕ ਕਤਾਰ ਦੇ ਅੰਦਰ ਤੱਤ।
- ਕਲਿਕ ਕਰਨ ਤੋਂ ਬਾਅਦ ਮੇਰਾ ਸਾਫ਼ ਬਟਨ ਟੇਬਲ ਨੂੰ ਤਾਜ਼ਾ ਕਿਉਂ ਨਹੀਂ ਕਰਦਾ?
- ਨੂੰ ਦਸਤੀ ਟਰਿੱਗਰ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਓ ਜਾਂ ਟੇਬਲ ਡਿਸਪਲੇਅ ਨੂੰ ਤਾਜ਼ਾ ਕਰਨ ਲਈ ਇਨਪੁਟ ਖੇਤਰ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਤੋਂ ਬਾਅਦ ਘਟਨਾ.
jQuery ਦੇ ਨਾਲ ਖੋਜ ਫਿਲਟਰਾਂ ਦੇ ਸਹੀ ਕੰਮਕਾਜ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਇੱਕ ਸਹਿਜ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਇਨਪੁਟ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਤੋਂ ਬਾਅਦ ਖੋਜ ਅੱਪਡੇਟ ਨਾ ਹੋਣ ਵਰਗੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਇਵੈਂਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਕੇ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਲੋੜ ਪੈਣ 'ਤੇ ਸਾਰੇ ਸੰਬੰਧਿਤ ਤਰਕ ਮੁੜ-ਚਾਲੂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
ਪ੍ਰਦਰਸ਼ਨ ਅਨੁਕੂਲਤਾ ਨੂੰ ਲਾਗੂ ਕਰਨਾ, ਜਿਵੇਂ ਕਿ ਡੀਬਾਉਂਸਿੰਗ, ਅਤੇ ਆਧੁਨਿਕ JavaScript ਪਹੁੰਚਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਨਾਲ ਫਿਲਟਰ ਦੀ ਸਮੁੱਚੀ ਕੁਸ਼ਲਤਾ ਵਿੱਚ ਸੁਧਾਰ ਹੋ ਸਕਦਾ ਹੈ। ਇਹਨਾਂ ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸਾਂ ਨਾਲ, ਤੁਸੀਂ ਮਜ਼ਬੂਤ, ਗਤੀਸ਼ੀਲ ਟੇਬਲ ਬਣਾ ਸਕਦੇ ਹੋ ਜੋ ਖੋਜ ਅਤੇ ਰੀਸੈਟ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਸੰਭਾਲਦੀਆਂ ਹਨ, ਭਾਵੇਂ ਵੱਡੇ ਡੇਟਾਸੈਟਾਂ ਜਾਂ ਅਕਸਰ ਅੱਪਡੇਟ ਕੀਤੀ ਸਮੱਗਰੀ ਦੇ ਨਾਲ।
- ਇਹ ਲੇਖ ਸਹੀ ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਫਿਲਟਰਿੰਗ ਤਰਕ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ jQuery ਲਾਇਬ੍ਰੇਰੀ ਤੋਂ ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ਾਂ ਅਤੇ ਵਧੀਆ ਅਭਿਆਸਾਂ ਦਾ ਲਾਭ ਲੈਂਦਾ ਹੈ। ਹੋਰ ਵੇਰਵਿਆਂ ਲਈ, ਅਧਿਕਾਰਤ jQuery ਦਸਤਾਵੇਜ਼ਾਂ 'ਤੇ ਜਾਓ: jQuery API ਦਸਤਾਵੇਜ਼ .
- JavaScript ਇਵੈਂਟ ਪ੍ਰਬੰਧਨ ਅਤੇ ਇਨਪੁਟ ਅਤੇ ਕੀਅਪ ਇਵੈਂਟਸ ਦੀ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਵਰਤੋਂ ਕਰਨ ਦੀਆਂ ਉਦਾਹਰਨਾਂ ਲਈ, ਮੋਜ਼ੀਲਾ ਡਿਵੈਲਪਰ ਨੈੱਟਵਰਕ 'ਤੇ ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਬਾਰੇ ਗਾਈਡ ਦੇਖੋ: MDN ਵੈੱਬ ਡੌਕਸ - ਇਵੈਂਟਸ .
- ਮਾਡਿਊਲਰ JavaScript ਅਤੇ ਕੋਡ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਵਿੱਚ ਇਨਸਾਈਟਸ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਸਰੋਤਾਂ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ: JavaScript.info - ਮੋਡੀਊਲ .
- ਜੈਸਮੀਨ ਵਰਗੇ ਟੈਸਟਿੰਗ ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਦਾ ਇੱਥੇ ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ਾਂ ਤੋਂ ਹਵਾਲਾ ਦਿੱਤਾ ਗਿਆ ਸੀ: ਜੈਸਮੀਨ ਦਸਤਾਵੇਜ਼ .