colModelにはcustom_func: myFunc()
、jqGridネイティブのAddまたはEditモーダルフォームのテキストフィールドに入力された整数値が、オプションで設定されているグリッドに表示される少数の行でまだ使用されていないかどうかをテストするものがloadonce:true
あります。モーダルフォームの[送信]ボタンがクリックされるまで、この方法はcustom_func:
実行されませんが、フォーカスアウト(またはぼかし?)のときにモーダルフォームのテキストフィールドをテストしてもらいたいのですが。これを行う方法はありますか?私はafterShowForm:
オプションで以下に示すようにそれをやろうとしました、そしてそれは一種の働きをします、しかしエラーメッセージと停止は送信ボタンがクリックされたときと同じではありません、からフォーカスアウト/ブラーをする方法はありますcustom_func: myFunc()
か?
次に、colModelスニペット、カスタム関数、afterFormShow: function()
およびAddモーダルフォームでfocusoutを使用する試みを示します。
//colModel
...},
{name: 'ezyid', index: 'ezyid', width: 60, align: "center", editable: true,
formoptions: { rowpos: 1,
colpos: 1,
label: "Ezy ID",
elmprefix: "(*) "
},
editrules: {
custom: true,
custom_func: chkDuplicateEzyids, //custom function
required: true
}
},
colModelカスタム関数:
function chkDuplicateEzyids(value, colname) {
var isFound = false;
var rows = grid.jqGrid('getRowData');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
if (value == row.ezyid && value != '') { isFound = true };
}
if(isFound){
return [false, "This Ezy ID is in use, please enter another or press Cancel."];
} else {
return [true, ""];
}
}
[モーダルフォームの追加]オプションのオプションからアクセスするカスタム関数を使用するという私の理想的とは言えない試みafterShowForm:
(この方法で行う必要がある場合は、[編集]でも同様に使用できます)。
addSettings = {
recreateForm: true,
jqModal: false,
reloadAfterSubmit: false,
closeOnEscape: true,
closeAfterAdd: true,
afterShowForm: function ($form) {
var form = $form.parent()[0];
$("#ezyid", form).blur(function () { //or focusout() if better
var resp = chkDuplicateEzyids($(this).val(), 'Ezy ID');
if (!resp[0]) {
$("#FormError", form).show();
$(".ui-state-error", form).html(resp[1]);
}
});
$("#lui_" + grid[0].id).hide();
},
onclickSubmit: onclickSubmitLocal
},
要約すると、フォームの他のすべての値を入力して[送信]ボタンに移動し、値がすでに使用されていることを確認するのではなく、フォーカスアウト(またはぼかし)を使用してテキストフィールドの値をすぐにテストしたいと思います。これは一般的な方法のようですが、このコンテキストでは理解できません。多くのTIA。
(一部のコードスニペットは、承認とstackoverflowユーザー@Olegへの感謝を込めて再利用されました)