0

当我在更改时使用 select 时遇到问题 - 我的变量丢失了......在标题中是:

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...

现在我总是将 prescreen 设置为 1 并且更接近 UNDEFINED 值??

4

5 回答 5

1
  var closer = $('input[name=closer]');

应该

  var closer = $('select[name=closer]');
于 2012-10-11T13:52:17.147 回答
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);
        }
    });
}
于 2012-10-11T13:52:23.690 回答
0

使用表单 id 按名称搜索元素并将名称放在“”中

所以

$('#id-of-form input[name="closer"]')
于 2012-10-11T13:50:09.930 回答
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 事件的具体“选择”的上下文中做正确的事情。

于 2012-10-11T13:53:25.203 回答
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()

于 2012-10-11T13:55:43.280 回答