我在使用select on change时遇到问题 - 我的变量丢失了......在标题中是:
function reassignPrescreen(prescreen, closer) {
var prescreen = $('input[name=prescreen]');
var closer = $('input[name=closer]');
var data = 'prescreenid=' + prescreen.val() + '&closer=' + closer.val();
alert(data);
$.ajax({
type: "GET",
url: "reassign-prescreen.php",
data: data,
success: function (html) {
alert(html);
}
});
}
我身体有多种形式:
<form action="reassign-prescreen.php" class="psreassign">
<input type="hidden" name="prescreen" value="1">
<SELECT class="chzn-select medium-select select" name="closer" onchange='reassignPrescreen()' data-placeholder="Choose a Closer">
<OPTION VALUE=""></OPTION>
<OPTION VALUE="59785">Ron </OPTION>
<OPTION VALUE="59786">Paul </OPTION>
<OPTION VALUE="74236">Jack </OPTION>
</SELECT>
</form>
<form action="reassign-prescreen.php" class="psreassign">
<input type="hidden" name="prescreen" value="2">
<SELECT class="chzn-select medium-select select" name="closer" onchange='reassignPrescreen()' data-placeholder="Choose a Closer">
<OPTION VALUE=""></OPTION>
<OPTION VALUE="59785">Ron </OPTION>
<OPTION VALUE="59786">Paul </OPTION>
<OPTION VALUE="74236">Jack </OPTION>
</SELECT>
</form>
....ETC...
现在我总是将预筛选视为1和更接近UNDEFINED值?
答案 0 :(得分:1)
var closer = $('input[name=closer]');
应该是
var closer = $('select[name=closer]');
答案 1 :(得分:1)
修改后的代码。更接近是没有输入的选择框。 jsfiddle
function reassignPrescreen(self){
var form = $(self).parents("form:first");
var prescreen = $('input[name=prescreen]', form );
var closer = $('select[name=closer]', form);
var data = 'prescreenid=' + prescreen.val() + '&closer=' + closer.val();
alert(data);
$.ajax({
type: "GET",
url: "reassign-prescreen.php",
data: data,
success: function (html) {
alert(html);
}
});
}
答案 2 :(得分:0)
使用表单ID按名称搜索元素,并将名称放在“”
中所以
$('#id-of-form input[name="closer"]')
答案 3 :(得分:0)
将this
参数添加到onchange调用中,如下所示:
onchange='reassignPrescreen(this)'
然后替换以下代码:
function reassignPrescreen() {
var prescreen = $('input[name=prescreen]');
var closer = $('input[name=closer]');
这个:
function reassignPrescreen(elem) {
var prescreen = $(elem).siblings('input[name=prescreen]');
var closer = $(elem).val();
这将在onchange事件触发的具体“select”的上下文中做正确的事情。
答案 4 :(得分:0)
首先......方法声明带有2个变量......
function reassignPrescreen(**prescreen, closer**) {
当您再次定义该变量时,您会立即覆盖变量“prescreen”,下一行,意味着您传递的内容已消失...
var prescreen = $('input[name=prescreen]');
你的功能应该是 -
function reassignPrescreen(prescreen, closer) {
var _prescreen = $(prescreen);
var _closer = $(closer);
var data = 'prescreenid=' + _prescreen.val() + '&closer=' + _closer.val();
alert(data);
$.ajax({
type: "GET",
url: "reassign-prescreen.php",
data: data,
success: function (html) {
alert(html);
}
});
}
如果这不是您想要的行为,并且您不需要传递变量,那么您应该使用它。
function reassignPrescreen() {
var prescreen = $("input[name='prescreen']");
var closer = $("input[name='closer']");
var data = 'prescreenid=' + prescreen.val() + '&closer=' + closer.val();
alert(data);
$.ajax({
type: "GET",
url: "reassign-prescreen.php",
data: data,
success: function (html) {
alert(html);
}
});
}
编辑:是的,根据您在html中的“onchange”事件中所拥有的内容,您应该使用上面提到的第二种方法。 reassignPrescreen()