【发布时间】:2016-12-03 02:52:18
【问题描述】:
我正在尝试将显示元素切换为输入元素,这样我就可以让用户在不刷新页面的情况下更新数据。
除了这段代码一切正常
//* values*/
var customernameval = customername.attr('value');
var customerphoneval = customerphone.attr('value');
var customerfaxval = customerfax.attr('value');
var customeremailval = customeremail.attr('value');
我尝试了 val() 和 text(),但它们也不起作用!
如何从输入中获取值,以便使用 ajax 发送它!
/*Edit customer details*/
$(document).ready(function() {
$(document).on('click','#edit_customer_info',function(){
var shipmentid = $(this).attr('value1');
/*selectors*/
var customername = $('#edit_customer_name'+shipmentid);
var customerphone = $('#edit_customer_phone'+shipmentid);
var customerfax = $('#edit_customer_fax'+shipmentid);
var customeremail = $('#edit_customer_email'+shipmentid);
var Update = $('#update_customer_info');
//* values*/
var customernameval = customername.text();
var customerphoneval = customerphone.text();
var customerfaxval = customerfax.text();
var customeremailval = customeremail.text();
/*remove edit button*/
$(this).css('display','none');
/*show update button*/
Update.css('display','inline');
/*append input text into the field*/
customername.html("<input type='text' id='edit_customer_name"+shipmentid+"' value='"+customernameval+"'>");
customerphone.html("<input type='text' id='edit_customer_phone"+shipmentid+"' value='"+customerphoneval+"'>");
customerfax.html("<input type='text' id='edit_customer_fax"+shipmentid+"' value='"+customerfaxval+"'>");
customeremail.html("<input type='text' id='edit_customer_email"+shipmentid+"' value='"+customeremailval+"'>");
});
//update customer data
$(document).on('click','#update_customer_info',function(){
var shipmentid = $(this).attr('value1');
/*selectors*/
var customername = $('#edit_customer_name'+shipmentid);
var customerphone = $('#edit_customer_phone'+shipmentid);
var customerfax = $('#edit_customer_fax'+shipmentid);
var customeremail = $('#edit_customer_email'+shipmentid);
//* values*/
var customernameval = customername.attr('value');
var customerphoneval = customerphone.attr('value');
var customerfaxval = customerfax.attr('value');
var customeremailval = customeremail.attr('value');
alert(customernameval);
/*append input text into the field*/
customername.html(customernameval);
customerphone.html(customerphoneval);
customerfax.html(customerfaxval);
customeremail.html(customeremailval);
});
});
【问题讨论】:
-
在你的行之后 'var customername = $('#edit_customer_name'+shipmentid);'添加 console.log('customername count=' + customername.length)。您正在寻找 1。这是为了确认您没有带有 customername id 的多个元素。告诉我。
-
我得到了“customername count=1”
-
好的 - 你能在警报前尝试一下吗?这个想法是,当像 .val() 这样的简单 jquery 命令失败时,首先要检查的是您的假设(a)有一个具有指定 id 的元素,并且(b)没有多个具有指定 id 的元素.要检查 (a) 使用通过选择器获得的 jquery 对象的长度属性,或者 (b) 按 F12 并检查元素并搜索 (ctrl-F) 以获取预期的元素 ID。如果答案是 1,那么您的假设是正确的,并且只有一个元素,所以问题一定是其他问题。但很少发生。