jquery事件没有变化

时间:2013-01-08 10:20:04

标签: javascript jquery forms validation select

是(焦点)是aproach。最终代码如下:

setInterval(function(){
    if($j("SELECT[name='cf20_field_7']").is(":focus")) return false; 
    var information = '';
    var i = 1;
    $j("#cf20_field_1").html();
    //add new information to hidden field
    $j("#cforms20form .info_for_email").each(function(){
        var name = $j(this).find("INPUT[name='cf20_field_5']").val();
        var inn = $j(this).find("INPUT[name='cf20_field_6']").val();
        var view = $j(this).find("SELECT[name='cf20_field_7']").val();
        //render
        information += i + ")";
        information += "Наименование организации: " + name + ".<br/>\n";
        information += "Реквизиты организации: " + inn + ".<br/>\n";
        information += "Стоимость заказа: выписка " + view + ".<br/>\n";
        i++;
    })
    $j("#cf20_field_1").html(information);

    hovered = true;
}
    ,100
);

当SELECT字段中没有悬停时,是否有可能触发功能。

还有一些方法可以检查SELECT字段是否有悬停。

它导致问题。当您尝试选择另一个选项时,光标在setInterval工作时正在进行。

我找到的最佳方法如下:

//every 100 mil secconds update info
setInterval(function(){

    $j("SELECT[name='cf20_field_7']").trigger('change');
    if ( $j("SELECT[name='cf20_field_7']").on("change")) return false;
    var information = '';
    var i = 1;
    $j("#cf20_field_1").html();
    //add new information to hidden field
    $j("#cforms20form .info_for_email").each(function(){
        var name = $j(this).find("INPUT[name='cf20_field_5']").val();
        var inn = $j(this).find("INPUT[name='cf20_field_6']").val();
        var view = $j(this).find("SELECT[name='cf20_field_7']").attr("value");
        //render
        information += i + ")";
        information += "Наименование организации: " + name + ".<br/>\n";
        information += "Реквизиты организации: " + inn + ".<br/>\n";
        information += "Стоимость заказа: выписка " + view + ".<br/>\n";
        i++;
    })
    $j("#cf20_field_1").html(information);
}
    ,100
);

更多信息: 我可以更多地描述情况。所以我有一张表格。 onsubmit事件没有工作,因为还有另一个事件是attachet。所以我希望每100毫秒更新一次表格的价值。该值包含所有动态创建的“选择和输入”。但是当我尝试通过鼠标更改选择的值时。该函数被触发并且函数检查选择值并导致鼠标乞讨。因此,我需要以某种方式检查是否悬停了该选择以防止触发该功能。

2 个答案:

答案 0 :(得分:2)

此处无效:

if ( SELECT[name='cf20_field_7'].on("change"))

我想你需要这个:

if ( $("SELECT[name='cf20_field_7']").on("change"))

但是,上述情况仍无效。你需要一些处理程序,如:

$("SELECT[name='cf20_field_7']").on("change", function(){
    return false;
});

答案 1 :(得分:0)

if ($j("SELECT[name='cf20_field_7']").on("change")) return false

不清楚这里应该检查什么。我假设你想运行一些附加到onchange甚至select的函数。在这种情况下,您应该使用.trigger而不是.on。但在这两种情况下,返回值都是jquery对象(用于链接目的)所以基本上你的语句将始终都是真的triggeron如果你想测试一些select值,你应该做点什么像下一个:

if(someTestFunct($j("SELECT[name='cf20_field_7']"))) return false;
function someTestFunct(jObj) {
    //some other code?
    return jObj.val() == "some value to test";
}

可能会使用一些更好的方法,但没有更多细节,很难提出一些建议。