我所拥有的是什么,所以我只想问是否有一种更优雅的方式来做到这一点。我有:
<form method="post" action="15Action.cfm">
<p><input id="A" name="A1"></p>
<p><input id="B" name="B1"></p>
<p><input id="C" name="C1"></p>
<input name="Submit" type="submit" value="submit">
</form>
如果更改A或B,则将两个字段连接在一起并将它们放入C. 我所拥有的是:
function doit(A,B) {
return A+B;
};
$(function() {
var A = $('#A');
var B = $('#B');
$('#A, #B').change(function() {
$('#C').val(doit(A.val(),B.val()));
});
});
我想知道我是否应该写
$('#C').val(doit(A,B))
相反,或者传递A.val(),B.val()?是否可以接受
答案 0 :(得分:1)
无论哪种方式都很好......它依赖的是你期望永远传递给doit
的什么类型的参数。如果你使用jQuery对象(阅读元素),我可能会将选择器中的jinut传递给doit
并在那里进行所有查找 - 或者你可以自己传递jQuery对象,因为这不会产生很大的不同
function doit(a,b){
return $(a).val()+$(b).val();
}
// these are then functionally equiv.
doit('#A','#B');
doit($('#A'), $('#B'));
答案 1 :(得分:1)
我想知道我是否应该写
相反,或者传递A.val(),B.val()?是否可以接受$('#C').val(doit(A,B))
传递A,B
不起作用。您的解决方案看起来相当优雅,您甚至可以缓存jQuery对象以在您使用的闭包中获得A,B。
你可以通过以下方式使它更简洁:
function doit(A,B) {
return A+B;
};
$(function() {
var A = $('#A');
var B = $('#B');
$('#A, #B').change(function() {
$('#C').val(doit(A.val(),B.val()));
});
});
答案 2 :(得分:1)
如果在doit()
内,您需要A和B的值,两种方法都是相同的。我会保留你的代码。
答案 3 :(得分:1)
如果你所做的只是连接两个值,我甚至不会打扰doit()
函数,只需将这两个值粘合在一起。
$(function() {
$('#A, #B').change(function() {
$('#C').val($('#A').val() + $('#B').val());
});
});