我想知道我怎么会得到一个id值,所以我可以做这样的事情,我有2个字段和一个div(状态)。
<input name="item_1" type="hidden" value="1" />
<input type="text" name="date_1" id="dateselect" onchange="check();" />
<div id="status_1">Click on the field above!</div>
<input name="item_2" type="hidden" value="2" />
<input type="text" name="date_2" id="dateselect" onchange="check();" />
<div id="status_2">Click on the field above!</div>
隐藏字段中的值与item_x和date_x等喜欢的数字相同,即2组字段,并且会有更多!用PHP编写(foreach项目)。
所以我需要将这些字段的值传递给ajax请求。
date = $("[name='date']").val();
item = $("[name='item']").val();
elm = "#status";
我如何将“1”或“2”作为名为id的var,所以我可以做类似的事情
date = $("[name='date_"+id+"']").val();
item = $("[name='item_"+id+"']").val(); or item = id;
elm = "#status_"+id;
由于这些迷你检查器会有多个,只有在点击时才会同时但不能同时执行。当只有1时,我可以很容易地做到这一点,但是当有更多的时候,我有点卡住了。
继承我做它的版本一次,我需要一些如何设置id,所以它不再是未定义的:
function check(id,elm) {
book = $("[name='date']").val();
var item = '';
if(id === undefined){
item = $("[name='item']").val();
}else{
item = id;
}
if(elm === undefined){
elm = "#status";
}
if(book.length >= 3 && item.length >= 0) {
$(elm).html('<img align="middle" src="images/loading.gif" alt="Checking" /> Checking availability...');
$.ajax({type: "POST",url: "checker.php",data: "date="+book+"&itemid="+item,success: function(msg){
$(elm).ajaxComplete(function(event, request, settings){
if(msg == 'OK') {
$(elm).html(' <img align="middle" src="images/tick.png" alt="Available" /> Available!');
$(elm).next().val(1);
} else {
$(elm).html(msg);
$(elm).next().val(0);}
});
}});
} else {
$(elm).html('');
}
}
感谢您的帮助
答案 0 :(得分:3)
基于没有onchange
事件的标记
<input name="item_1" type="hidden" value="1" />
<input type="text" name="date_1" id="dateselect" />
<div id="status_1">Click on the field above!</div>
<input name="item_2" type="hidden" value="2" />
<input type="text" name="date_2" id="dateselect" />
<div id="status_2">Click on the field above!</div>
你可以让jQuery为初学者做事件接线,并使用正确的事件(我认为onkeypress
或onblur
最好)
$(function(){
// bind the onkeypress event to textboxes that start with 'date_'
$("input:text[name^='date_']").onkeypress(function(){
var id = $(this).attr("name").split("_")[1];
var $date = $(this);
var $item = $("[name='item_" + id + "']");
var $status = $("#status_" + id);
if($date.val().length >= 3 && $item.length > 0) {
$status.html('<img align="middle" src="images/loading.gif" alt="Checking" /> Checking availability...');
$.ajax({
type: "POST",
url: "checker.php",
data: "date=" + $date.val() + "&itemid=" + $item.val(),
success: function(msg) {
if(msg == 'OK') {
$status.html('<img align="middle" src="images/tick.png" alt="Available" /> Available!');
$item.val(1);
} else {
$status.html(msg);
$item.val(0);
}
}
});
}
else {
$status.html('');
}
});
});
答案 1 :(得分:0)
你可以做这样的事情,得到一个包含数据的数组:
<input name="item[]" type="hidden" value="1" />
<input type="text" name="date[]" id="dateselect" onchange="check();" />
<div id="status[]">Click on the field above!</div>