ජාවාස්ක්‍රිප්ට් භාවිතයෙන් පෙළ ආදාන ක්ෂේත්‍රයේ වටිනාකම ලබා ගන්නේ කෙසේද?


900

මම ජාවාස්ක්‍රිප්ට් සමඟ සෙවීමක් කරමින් සිටිමි. මම පෝරමයක් භාවිතා කරමි, නමුත් එය මගේ පිටුවේ වෙනත් දෙයක් අවුල් කරයි. මට මෙම ආදාන පෙළ ක්ෂේත්‍රය ඇත:

<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

මෙය මගේ ජාවාස්ක්‍රිප්ට් කේතයයි:

<script type="text/javascript">
  function searchURL(){
    window.location = "http://www.myurl.com/search/" + (input text value);
  }
</script>

පෙළ ක්ෂේත්‍රයේ වටිනාකම ජාවාස්ක්‍රිප්ට් වෙත ලබා ගන්නේ කෙසේද?

Answers:


1823

ආදාන පෙළ කොටුවේ අගය කෙලින්ම ලබා ගැනීම සඳහා විවිධ ක්‍රම තිබේ (ආකෘති මූලද්‍රව්‍යයක් තුළ ආදාන අංගය ඔතා නොගෙන):

ක්රමය 1:

document.getElementById('textbox_id').value අපේක්ෂිත කොටුවේ වටිනාකම ලබා ගැනීමට

උදාහරණයක් වශයෙන්, document.getElementById("searchTxt").value;

 

සටහන: ක්‍රමය 2,3,4 සහ 6 මඟින් මූලද්‍රව්‍ය එකතුවක් ලබා දෙයි, එබැවින් අපේක්ෂිත සිදුවීම ලබා ගැනීමට [සම්පූර්ණ_ අංකය] භාවිතා කරන්න. පළමු අංගය සඳහා, [0] භාවිතා කරන්න, දෙවැන්න 1 භාවිතා කරන්න , සහ එසේ ය ...

ක්රමය 2:

document.getElementsByClassName('class_name')[whole_number].valueසජීවී HTMLC එකතුවක් ලබා දෙන භාවිතා කරන්න

උදාහරණයක් ලෙස, document.getElementsByClassName("searchField")[0].value; මෙය ඔබේ පිටුවේ පළමු පෙළ කොටුව නම්.

ක්රමය 3:

භාවිතය document.getElementsByTagName('tag_name')[whole_number].valueද සජීවී HTMLCollection නැවත වන

උදාහරණයක් ලෙස, document.getElementsByTagName("input")[0].value; මෙය ඔබේ පිටුවේ පළමු පෙළ කොටුව නම්.

ක්රමය 4:

document.getElementsByName('name')[whole_number].value එය> සජීවී නෝඩ් ලැයිස්තුවක් ලබා දෙයි

උදාහරණයක් ලෙස, document.getElementsByName("searchTxt")[0].value; මෙය ඔබේ පිටුවෙහි 'සෙවුම් පෙළ' යන නම සහිත පළමු පෙළ කොටුව නම්.

ක්රමය 5:

document.querySelector('selector').valueමූලද්රව්යය තේරීමට CSS තේරීමක් භාවිතා කරන බලවත් භාවිතා කරන්න

උදාහරණයක් ලෙස, document.querySelector('#searchTxt').value; හැඳුනුම්පතකින්
document.querySelector('.searchField').value;තෝරාගත් පංතියෙන්
document.querySelector('input').value;තෝරාගත් ටැග්
document.querySelector('[name="searchTxt"]').value;නමෙන් තෝරාගනු ලැබේ

ක්රමය 6:

document.querySelectorAll('selector')[whole_number].value මූලද්‍රව්‍ය තෝරා ගැනීම සඳහා එය CSS තේරීම් කාරකයක් භාවිතා කරයි, නමුත් එය එම තේරීම් කාරකය සමඟ ඇති සියලුම අංග ස්ථිතික නෝඩ්ලිස්ට් ලෙස ලබා දෙයි.

උදාහරණයක් ලෙස, document.querySelectorAll('#searchTxt')[0].value; හැඳුනුම්පතකින්
document.querySelectorAll('.searchField')[0].value;තෝරාගත් පංතියෙන්
document.querySelectorAll('input')[0].value; තෝරාගත් ටැග්
document.querySelectorAll('[name="searchTxt"]')[0].value;නමෙන් තෝරාගනු ලැබේ

සහාය

Browser          Method1   Method2  Method3  Method4    Method5/6
IE6              Y(Buggy)   N        Y        Y(Buggy)   N
IE7              Y(Buggy)   N        Y        Y(Buggy)   N
IE8              Y          N        Y        Y(Buggy)   Y
IE9              Y          Y        Y        Y(Buggy)   Y
IE10             Y          Y        Y        Y          Y
FF3.0            Y          Y        Y        Y          N    IE=Internet Explorer
FF3.5/FF3.6      Y          Y        Y        Y          Y    FF=Mozilla Firefox
FF4b1            Y          Y        Y        Y          Y    GC=Google Chrome
GC4/GC5          Y          Y        Y        Y          Y    Y=YES,N=NO
Safari4/Safari5  Y          Y        Y        Y          Y
Opera10.10/
Opera10.53/      Y          Y        Y        Y(Buggy)   Y
Opera10.60
Opera 12         Y          Y        Y        Y          Y

ප්‍රයෝජනවත් සබැඳි

  1. වැඩි විස්තර ඇතුළුව සියලු දෝෂ සමඟ මෙම ක්‍රමවල සහාය බැලීමට මෙතැන ක්ලික් කරන්න
  2. ස්ථිතික එකතු සහ සජීවී එකතු අතර වෙනස මෙතැන ක්ලික් කරන්න
  3. NodeList සහ HTMLC එකතුව අතර වෙනස මෙතැන ක්ලික් කරන්න

මට පෙනෙන පරිදි IE8 QSA සඳහා සහය දක්වයි , එය තේරීම් තීරුවේ CSS3 තේරීම්කරුවන්ට සහය නොදක්වයි.
Fabrício Matté

Ab FabrícioMatté මම දැන් මෙහි පරීක්ෂා කර ඇත්තේ quirksmode.org/dom/tests/basics.html#querySelectorAll සහ එය මට කියා සිටියේ එය එසේ නොවන බවයි
bugwheels94

සිත්ගන්නා සුළුය. Win7 සඳහා IE8 හි සරල පරීක්ෂණය jsfiddle.net/syNvz/show සහ QSA ද querySelectorසහාය දක්වයි jsfiddle.net/syNvz/2/show
Fabrício Matté

1
අතිශයින්ම ප්‍රයෝජනවත් ලේඛනය, යොමු කිරීම සඳහා සුරකින ලදි. ස්තූතියි.
ඇන්ඩි

1
@ ජී කිස්ලින් අහ්! මට පේනවා. මම ඒ ගැන නොදැන සිටීම සතුටක්. නමුත් මෙය කියවීමෙන් පසු , මෙම සංස්කරණය දැන් පිළිතුරට එක් කිරීමට මා අදිමදි කරමි. සමහර විට යම් දවසක, එය වළක්වා ගැනීම සඳහා මම එය අනතුරු ඇඟවීමක් සමඟ එකතු කරමි. අනතුරු ඇඟවීමට එක් හේතුවක් මෙයයි . එය ඇත්තෙන්ම හොඳයි කියා ඔබට හැඟේ නම්, එක්කෝ අනතුරු ඇඟවීමක් සමඟ සංස්කරණයක් කරන්න හෝ ඔබේ අභිමතය පරිදි වෙනත් පිළිතුරක් එක් කරන්න :)
bugwheels94

33
//creates a listener for when you press a key
window.onkeyup = keyup;

//creates a global Javascript variable
var inputTextValue;

function keyup(e) {
  //setting your input text to the global Javascript Variable for every key press
  inputTextValue = e.target.value;

  //listens for you to press the ENTER key, at which point your web address will change to the one you have input in the search box
  if (e.keyCode == 13) {
    window.location = "http://www.myurl.com/search/" + inputTextValue;
  }
}

කෝඩපෙන් හි මෙම ක්‍රියාකාරීත්වය බලන්න.


පිළිගත් පිළිතුරේ සම්පූර්ණත්වය මම අගය කරන අතරම, මෙම පිළිතුර නැවත භාවිතයට ගත හැකි බව මට පෙනී ගියේය: JS කේතයෙන් ප්‍රවේශ වීම, DOM පෙළ ආදාන අංගයක (පෙළ කොටුව) ඇතුළත් කළ අගයක්. වැඩි විස්තර සඳහා, මෙම ප්‍රශ්නයේ වෙනත් තැනක මගේ පිළිතුර බලන්න.
වික්ටෝරියා ස්ටුවර්ට්

19

මේ ආකාරයට ආදානය ගබඩා කිරීම සඳහා මම විචල්‍යයක් නිර්මාණය කරමි:

var input = document.getElementById("input_id").value;

ඊට පස්සෙ මම විචල්යය පාවිච්චි කරන්නේ නූලට ආදාන අගය එකතු කරන්න.

= "Your string" + input;


සෑම දේපලකටම ක්‍රමලේඛගතව ප්‍රවේශ විය හැකි වන පරිදි එය නිසි ජාවාස්ක්‍රිප්ට් වස්තුවක් වීමට ඔබට අවශ්‍ය නම්, කරන්න: var input = JSON.parse (document.getElementById ("input_id"). අගය);
ජේක්

සරල හා forward ජු ඉදිරි පිළිතුර !!
අරුන්

16

ඔබට මේ වගේ ටැග් නම් වලින් ඇමතිය හැකිය: form_name.input_name.value; එබැවින් ඔබට නිශ්චිත ආකාරයකින් නිශ්චිත ආදානයේ නිශ්චිත අගය ලැබෙනු ඇත.


ඔව්! මෙම සරල බව මා පුදුමයට පත් කළෙමි. සරල කැල්ක්යුලේටරය සාක්ෂාත් කර බලන්න කියලා 4stud.info/web-programming/samples/dhtml-calculator.html මම හැම විටම jQuery හෝ getElementById භාවිතා පෙර මම හේතුව, විද ාල මෙම ජාවාස්ක්රිප්ට් functiality සඳහා කිසිදු සඳහනක් ද
ග්රිගෝරි Kislin

16

ඔබට ටයිප් කිරීමට හැකි විය යුතුය:

var input = document.getElementById("searchTxt");

function searchURL() {
     window.location = "http://www.myurl.com/search/" + input.value;
}
<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

මෙය කිරීමට වඩා හොඳ ක්‍රම ඇති බව මට විශ්වාසයි, නමුත් මෙය සියලු බ්‍රව්සර් හරහා ක්‍රියාත්මක වන බව පෙනේ, එය සෑදීම, වැඩිදියුණු කිරීම සහ සංස්කරණය කිරීම සඳහා ජාවාස්ක්‍රිප්ට් පිළිබඳ අවම අවබෝධයක් අවශ්‍ය වේ.


5

මෙය උත්සාහ කරන්න

<input type="text" onkeyup="trackChange(this.value)" id="myInput">
<script>
function trackChange(value) {
    window.open("http://www.google.com/search?output=search&q=" + value)
}
</script>

4

Chrome සහ Firefox හි පරීක්ෂා කර ඇත:

මූලද්‍රව්‍ය හැඳුනුම්පත අනුව අගය ලබා ගන්න:

<input type="text" maxlength="512" id="searchTxt" class="searchField"/>
<input type="button" value="Get Value" onclick="alert(searchTxt.value)">

ආකෘති මූලද්‍රව්‍යයේ අගය සකසන්න:

<form name="calc" id="calculator">
  <input type="text" name="input">
  <input type="button" value="Set Value" onclick="calc.input.value='Set Value'">
</form>

https://jsfiddle.net/tuq79821/

ජාවාස්ක්‍රිප්ට් කැල්කියුලේටරය ක්‍රියාත්මක කිරීම දෙස බලන්න: http://www.4stud.info/web-programming/samples/dhtml-calculator.html

@ Bugwheels94 වෙතින් යාවත්කාලීන කරන්න: මෙම ක්‍රමය භාවිතා කරන විට මෙම ගැටළුව පිළිබඳව දැනුවත් වන්න .


2

පෝරමයක සියලුම අංග ලබා ගැනීමට කෙනෙකුට form.elements භාවිතා කළ හැකිය. මූලද්‍රව්‍යයකට හැඳුනුම්පතක් තිබේ නම් එය .namedItem ("id") සමඟ සොයාගත හැකිය. උදාහරණයක්:

var myForm = document.getElementById("form1");
var text = myForm.elements.namedItem("searchTxt").value;
var url = "http://www.myurl.com/search/" + text;

මුලාශ්‍රය: w3 පාසල්


2

ඔබට වැඩි ආදාන ක්ෂේත්‍රයක් ඇති විට ඔබට onkeyup භාවිතා කළ හැකිය. ඔබට හතරක් හෝ ආදානයක් ඇතැයි සිතමු. එවිට document.getElementById('something').valueකරදරයක් වේ. ආදාන ක්ෂේත්‍රයේ අගය ලබා ගැනීම සඳහා අපට පේළි 4 ක් ලිවිය යුතුය.

එබැවින්, යතුරු හෝ යතුරුපුවරු සිදුවීම මත වස්තුවෙහි අගය ගබඩා කරන ශ්‍රිතයක් ඔබට නිර්මාණය කළ හැකිය.

උදාහරණයක් :

<div class="container">
    <div>
        <label for="">Name</label>
        <input type="text" name="fname" id="fname" onkeyup=handleInput(this)>
    </div>
    <div>
        <label for="">Age</label>
        <input type="number" name="age" id="age" onkeyup=handleInput(this)>
    </div>
    <div>
        <label for="">Email</label>
        <input type="text" name="email" id="email" onkeyup=handleInput(this)>
    </div>
    <div>
        <label for="">Mobile</label>
        <input type="number" name="mobile" id="number" onkeyup=handleInput(this)>
    </div>
    <div>
        <button onclick=submitData()>Submit</button>
    </div>
</div>

javascript:

<script>
    const data={ };
    function handleInput(e){
        data[e.name] = e.value;
    }
    function submitData(){
        console.log(data.fname); //get first name from object
        console.log(data); //return object
    }
</script>

2

ඔබ inputa හි සිටී නම් formසහ ඉදිරිපත් කිරීමෙන් පසු ඔබට වටිනාකමක් ලබා ගැනීමට අවශ්‍ය නම් ඔබට එය කළ හැකිය

<form onsubmit="submitLoginForm(event)">
    <input type="text" name="name">
    <input type="password" name="password">
    <input type="submit" value="Login">
</form>

<script type="text/javascript">

    function submitLoginForm(event){
        event.preventDefault();

        console.log(event.target['name'].value);
        console.log(event.target['password'].value);
    }
</script>

මේ ආකාරයෙන් ප්‍රතිලාභ: ආදානය සහ තොරතුරු සඳහා ඔබේ පිටුවට 2 ක් ඇති උදාහරණය . formsenderreceiver

නම් ඔබ භාවිත කරන්නේ නැහැ formඑහෙනම්, අගය කිරීම සඳහා
- ඔබ 2 විවිධ සැකසිය හැක id(හෝ tagහෝ nameවැනි, එක් එක් අංශය සඳහා ...) sender-nameහා receiver-name, sender-addressහා receiver-address, ...
- ඔබ 2 ආදානය සඳහා එම අගය සකස් නම්, පසු getElementsByName(හෝ getElementsByTagName.. .) ඔබ මතක තබා ගත යුත්තේ 0 හෝ 1 වේsender හෝ receiver. පසුව ඔබ formhtml හි 2 අනුපිළිවෙල වෙනස් කරන්නේ නම් , ඔබ මෙම කේතය නැවත පරීක්ෂා කළ යුතුය

නම් ඔබ භාවිතා form, ඔබ භාවිතා කළ හැකිය name, address...




-3

ඔබට අගය කියවිය හැකිය

searchTxt.value

function searchURL() {
   let txt = searchTxt.value;
   console.log(txt);
   // window.location = "http://www.myurl.com/search/" + txt; ...
}

document.querySelector('.search').addEventListener("click", ()=>searchURL());
<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

<button class="search">Search</button>

යාවත්කාලීන කරන්න

මම බොහෝ අඩුපාඩු දකින නමුත් ඕනෑම අදහස් දැක්වීමක් - කෙසේ වෙතත් (අනාගත පා readers කයින් සඳහා) ඇත්ත වශයෙන්ම මෙම විසඳුම ක්‍රියාත්මක වේ


-4

ඔබ jQuery භාවිතා කරන්නේ නම් ප්ලගිනය formInteract භාවිතා කිරීමෙන් ඔබට මෙය කළ යුතුය:

// Just keep the HTML as it is.

<input name="searchTxt" type="text" maxlength="512" id="searchTxt" class="searchField"/>

පිටුවේ පතුලේ මෙම ප්ලගීන ගොනුව ඇතුළත් කර මෙම කේතය ලියන්න:

// Initialize one time at the bottom of the page.
var search= $("#searchTxt).formInteract();

search.getAjax("http://www.myurl.com/search/", function(rsp){
    // Now do whatever you want to with your response
});

නැතහොත් පරාමිතිගත URL එකක් භාවිතා කරන්නේ නම් මෙය භාවිතා කරන්න:

$.get("http://www.myurl.com/search/"+search.get().searchTxt, {}, function(rsp){
    // Now do work with your response;
})

ව්යාපෘතිය සඳහා සබැඳිය මෙන්න https://bitbucket.org/ranjeet1985/forminteract

පෝරමයක වටිනාකම ලබා ගැනීම, ආකෘති පත්රයකට අගයන් දැමීම, පෝරම වලංගු කිරීම සහ තවත් බොහෝ අරමුණු සඳහා ඔබට මෙම ප්ලගිනය භාවිතා කළ හැකිය. ව්යාපෘතියේ index.html ගොනුවේ කේත පිළිබඳ උදාහරණයක් ඔබට දැක ගත හැකිය.

ඇත්ත වශයෙන්ම මම මෙම ව්‍යාපෘතියේ කතුවරයා වන අතර එය වඩා හොඳ කිරීමට සියලු දෙනා සාදරයෙන් පිළිගනිමු.


7
මෙය ඔබේම පුද්ගලික ප්ලගිනයක් බව ඔබ සඳහන් කළ යුතුය.
හැනා

1
කේත ස්නිපෙට් වල අක්ෂර වින්‍යාසයක් ඇත. කේතයේ දෙවන කොටසේ ද්විත්ව උපුටා දැක්වීමක් නොමැත.
වින්සෙන්සෝ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.