nChangeチェックの落とし穴
2643 ワード
概要
ServiceNowではフィールドに入力された内容をonChangeスクリプトでチェックすることができる。しかし、それには落とし穴がある。不正な値が入力されていてもフォームを申請することができる。
間違えた内容の申請を防止するにはonSubmitのスクリプトでも同じチェックをすることもできるが、正規表現を定義した方が簡単にできる。
onChangeチェックの例
次のスクリプトはフィールド「phone_number」の形式をチェックしている。正しくない場合はメッセージを表示する。
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
try {
var phone = newValue.replace(/\s/g, '');
phone = phone.substring(0, 10);
phone = phone.substr(0, 4) + ' ' + phone.substr(4, 3) + ' ' + phone.substr(7, 3);
//var reg = new RegExp("^0[45][0-9]{2} [0-9]{3} [0-9]{3}$");
var reg = /^0[45][0-9]{2} [0-9]{3} [0-9]{3}$/;
if (reg.test(phone)) {
if (newValue != phone) {
g_form.setValue('phone_number', phone);
}
} else {
g_form.setValue('phone_number', '');
g_form.showFieldMsg('phone_number', 'Phone number should start with 0 and be 10 digits', "error");
}
} catch (e) {
alert(e.message);
}
}
しかし「Order Now」ボタンを押下すると間違えた内容で注文されてしまう。
正規表現
正規表現の定義
フィールドでの指定
実行
「Order Now」ボタンを押下するとフォームにエラーメッセージが表示されて申請はされない。
以上
Author And Source
この問題について(nChangeチェックの落とし穴), 我々は、より多くの情報をここで見つけました https://qiita.com/htshozawa/items/50937c707926ba5166c4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .