is(:focus)がアプローチでした。最終的なコードは次のとおりです。
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イベントは機能しませんでした。だから私は100ミリ秒ごとにフォームの最初のフィールドの値を更新することにしました。値には、動的に作成されたすべての「選択と入力」が含まれています。しかし、マウスでselectの値を変更しようとすると。関数が起動され、関数がselectの値をチェックして、マウスの物乞いを引き起こします。したがって、関数の起動を防ぐために、その選択がホバーされているかどうかを何らかの方法で確認する必要があります。