我无法确定如何在文本字段中添加值(排除空文本框和相应的复选框)以及所有已检查和未检查的值按顺序附加到字符串:name | T | F_name | F | F < / p>
我有这个代码,我一直试图弄清楚如何将它变成一个单独的字符串。提交后,我会将此字符串发送给我的控制器。
<input type="text" value="jim">
<input type="checkbox" checked="checked">
<input type="checkbox">
<input id="button_1" type="button" value="delete" ><br>
<input type="text" >
<input type="checkbox">
<input type="checkbox">
<input id="button_2" type="button" value="delete"><br>
<input type="text" value="deb">
<input type="checkbox" checked="checked">
<input type="checkbox" checked="checked">
<input id="button_3" type="button" value="delete"><br>
<input type="submit">
$(':input[type="text"]').each(function() {
if($(this).val() != "") {
nameString = $(this).val();
});
$(':checked').each(function() {
});
更新
答案 0 :(得分:2)
我建议:
var results = [], delimiter = '|', n, c;
$('input[type="text"]').each(function(){
var that = $(this);
n = this.value;
if (n !== ''){
c = that.nextUntil('input[type="button"]').map(function(){
return this.checked == true;
}).get().join(delimiter);
results.push(n,c);
}
});
console.log(results.join(delimiter));
上述内容确实依赖于HTML的结构(特别是按钮之前的radio
元素。
如果您需要true
/ false
为T
/ F
,请改为使用:
var results = [], delimiter = '|', n, c;
$('input[type="text"]').each(function(){
var that = $(this);
n = this.value;
if (n !== ''){
c = that.nextUntil('input[type="button"]').map(function(){
return (this.checked == true).toString().toUpperCase().slice(0,1);
}).get().join(delimiter);
results.push(n,c);
}
});
console.log(results.join(delimiter));
参考文献:
答案 1 :(得分:1)
你几乎就在那里,但如果我理解你的代码,你必须做一些小改动......
namestring = "";
$(':input[type="text"]').each(function() {
if($(this).val() != "") {
namestring += $(this).val();
$(this).find("input[type='checkbox']").each(function() {
if($(this).is(":checked"))
checked = T;
else
checked = F;
namestring += checked;
}
namestring += "_";
}
}
//<Send namestring places>
此代码应该可以满足您的要求,但我还没有对其进行测试。
答案 2 :(得分:1)
我使用2 for循环,因为我相信你想要每行结果。检查http://jsfiddle.net/s7JZF/7/
注意:如果文本框为空,我添加了排除行的条件。
var results = [],
delimiter = '|';
$('table tr').each(function () {
var line = [];
$(this).find('input').each(function () {
if (this.type == 'text') {
//exclue blank textbox
if (this.value == '') return false;
line.push(this.value);
} else if (this.type == 'checkbox') {
line.push(this.checked?'T':'F');
}
});
if (line.length) {
results.push(line.join(delimiter));
}
});
alert(results.join('_'));
答案 3 :(得分:0)
如果为每个输入设置相同的名称,则值将作为字符串数组发送。
所以你的服务器端控制器(你没说哪种技术)应该马上选择它。
复选框没有选中的值,默认情况下不会发送。
你可以'预览'这个做GET而不是POST表格,所以如果你有:
<input name="form1" value="yes" type="text" />
<input name="form1" type="checkbox" value="sure" checked />
<input name="form1" type="checkbox" value="noway" />
GET表格会给你:
someAction?form1=yes&form1=sure
反过来又是你服务器上的一个字符串数组。
我知道这不是一个直接的答案,而是正确使用可能对您的情况有所帮助的HTML输入元素。