在这个网页中,我动态生成多个文本框,每个文本框都意味着保持唯一值,我想动态获取该值。但是我无法根据其位置捕获文本框的值。此代码仅适用于首次生成的文本框。我有这样的代码
<tr>
<td align="center"><input type="text" name="serialNoArray[]" id="serialArray" onChange="checkusername()" ><span id="std_id_status"></span></td>
</tr>
<script>
function checkusername() {
var s = _("serialArray").value;
if(s != "") {
_("std_id_status").innerHTML = 'checking ...';
var ajax = ajaxObj("POST", "sellingDetails.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true){
_("std_id_status").innerHTML = ajax.responseText;
}
}
ajax.send("std_id_check="+s);
}
}
</script>
答案 0 :(得分:1)
首先,您应该使用不是id的类,因为具有id的元素对于整个文档必须是唯一的。
由于您使用onChange,因此可以使用this
onChange="checkusername(this)"
来传递元素。
我想你也应该更改restrict
函数onkeyup="restrict('serialArray')"
的代码,但我没有看到代码,所以如果你不提供这个代码我也无法帮助你...
<tr>
<td align="center"><input type="text" name="serialNoArray[]" class="serialArray" onkeyup="restrict('serialArray')" onChange="checkusername(this)" ><span class="std_id_status"></span></td>
</tr>
然后你只能获得被更改元素的值并仅更改匹配范围的html。(我在示例中使用jQuery,因此您应该将它包含在文档中。)
<script>
function checkusername(s) {
if (s.value != "") {
$(s).nextAll('.std_id_status').first().html('checking ...');
var ajax = ajaxObj("POST", "sellingDetails.php");
ajax.onreadystatechange = function() {
if (ajaxReturn(ajax) == true) {
$(s).nextAll('.std_id_status').first().html(ajax.responseText);
}
}
ajax.send("std_id_check=" + s.value);
}
}
</script>
由于我没有你所有的javascript代码,我无法测试它,但是这样的东西应该有效。
答案 1 :(得分:0)
我还没有测试但是应该这样做
所有动态生成的文本框,为他们提供一个类
<input type="text" class="tagMe" placeholder="Enter Serial No." onkeypress="return isNumberKey2(event)" onkeyup="restrict('serialArray')" onChange="checkusername()" required autofocus >
收集数据
var info= "";
$('.tagMe').each( obj, function( key, value ) {
if(info != "")
info += "^"; // ^ is a delimiter
info += value;
});
将信息发送到您的服务器,拆分^并解析数据(小心空元素)