にcontroltovalidate属性ありません。asp.netカスタムバリデータは、私は、ページ内のasp.netカスタムバリデータと私のjQueryプラグインを使用してポストバック
<asp:TextBox ID="txtModel" runat="server" />
<asp:CustomValidator ID="modelValidator" Display="Static" ControlToValidate="txtModel" ClientValidationFunction="validateDetails" EnableClientScript="true" runat="server" Text="My Message" />
<script type="text/javascript">
function validateDetails(sender, args) {
var controltovalidate = $(sender).attr('controltovalidate');
args.IsValid = $('#' + controltovalidate).data('MyPlugin').hasValidValue();
}
$(function() {
$('#<%=txtModel.ClientID %>').MyPlugin({
validator: $('#<%=modelValidator.ClientID %>') //In order to execute validation check when values inserted
});
});
</script>
あなたが見ることができるように、ポストバックで実行をバリデータに加えていますプラグインの中でバリデーターを実行したいので、プラグインのオプションでバリデーターを渡しました。
プラグインはバリデーターを実行するたびに(validateDetails機能が完璧に動作ValidatorValidate(options.validator.get(0));
を使用。
問題がポストバックである。送信者が突然持っていないので、私はvalidateDetails機能がvar controltovalidate = $(sender).attr('controltovalidate');
に失敗しポストバックを作るボタンを押すと、 controltovalidate
属性なぜそれが
@mshsayem:いいえ、私は使用していますこのvalidateDetails関数は、modelValidatorバリデータの場合にのみ機能します。 – Naor
バリデータが1つだけの場合は、なぜcontそれのようなロールですか? '$("#txtModel ")'はうまくいくはずですよね? 'args.IsValid = $('#txtModel ')。データ(' MyPlugin ')。hasValidValue(); '? – mshsayem
@mshsayem:そうですが、validateDetails関数は要素IDに依存しない方が好きです。さらに、validateDetails関数は異なるjsファイルにとどまっているため、レンダリングされたtxtModel要素のクライアントIDはありません。 – Naor