我有一个由用户输入填充的表。例如,First Name和Last Name有一个文本输入。 John在一个输入中,而Smith在下一个输入中,将在Name列下添加表作为John Smith,一个包含2个值的字符串。这是正常工作,以及地址列...但是从表到输入的值是问题。单击相应的行会填充输入,但我需要拆分这些值以填充正确的输入(以便将John Smith再次拆分为名字和姓氏)。有任何想法吗?提前谢谢。
的jQuery
/* Add a click handler to the rows - this could be used as a callback */
$("#example tbody tr").click(function (e) {
if ($(this).hasClass('rowSelected')) {
$(this).removeClass('rowSelected');
} else {
oTable.$('tr.rowSelected').removeClass('rowSelected');
$(this).addClass('rowSelected');
}
var properties; // all td from .row_selected
properties = fnGetSelected(oTable).find("td");
$("#fName").val(properties.eq(0).text());
$("#email").val(properties.eq(1).text());
$("#company").val(properties.eq(2).text());
});
答案 0 :(得分:2)
我建议您使用相应的类名将数据行元素包装在span中。给出名字和姓氏的例子,
<强> JS 强>
$('#addRow').click(function () {
var row =$('#example').dataTable().fnAddData([
'<span class="fname">'+$("#fName").val()+'</span> <span class="lname">' + $("#lName").val()+'</span>',
$("#email").val(),
小提琴的HTML
<td><span class='fname'>John</span> <span class='lname'>Smith</span></td>
然后,它是直截了当的,可以独立于文本格式检索值。
在小提琴中,您还可以找到将点击功能逻辑与新添加的行相关联的代码,以便可以选择它们。
$('#addRow').click(function () {
var row =$('#example').dataTable().fnAddData([
'<span class="fname">'+$("#fName").val()+'</span> <span class="lname">' + $("#lName").val()+'</span>',
$("#email").val(),
$("#company").val() + '<br>' + $('#address').val()]);
$(oTable.fnGetNodes(row)).click( function( e ) {
if ($(this).hasClass('rowSelected')) {
$(this).removeClass('rowSelected');
} else {
oTable.$('tr.rowSelected').removeClass('rowSelected');
$(this).addClass('rowSelected');
}
var properties; // all td from .row_selected
properties = fnGetSelected(oTable).find("td");
$("#fName").val(properties.eq(0).find('.fname').text());
$("#lName").val(properties.eq(0).find('.lname').text());
$("#email").val(properties.eq(1).text());
$("#company").val(properties.eq(2).text());
});
为了保持代码DRY,最好将click函数逻辑放在函数中并直接调用它,而不是复制代码。
答案 1 :(得分:1)
如果您100%确定姓氏和名字之间用空格分隔,则可以使用以下代码:
$("#fName").val(properties.eq(0).text().split(' ')[0]);
$("#lName").val(properties.eq(0).text().split(' ')[1]);
地址:
$("#company").val(properties.eq(2).html().split('<br>')[0].trim());
$("#address").val(properties.eq(2).html().split('<br>').splice(1).join('\n').trim());
答案 2 :(得分:0)
你可以做一个简单的改变,如:
var properties; // all td from .row_selected
properties = fnGetSelected(oTable).find("td");
var names = properties.eq(0).text().split(' ');
$("#fName").val(names[0]);
$("#lName").val(names[1]);
$("#email").val(properties.eq(1).text());
$("#company").val(properties.eq(2).text());
但是,只有当你确定名字和姓氏被一个恒定的单一空格分开时,否则你必须更改一点......