Проверка JavaScript: сравнение двух значений текстового поля - PullRequest
0 голосов
/ 11 июня 2010

У меня есть таблица с 5 строками и 2 столбцами. Каждая ячейка содержит текстовое поле. Я хочу показать ошибку, если одно из текстовых полей в каждом столбце пусто. Я хочу, чтобы оба текстовых поля в строке были заполнены или оба были пустыми.

Как я могу сделать это с помощью средств проверки Asp.net?

Я хочу расширить CompareValidator, чтобы он действовал только в том случае, если в обоих элементах controlToValidate и controlToCompare есть какой-либо текст или оба они пусты.

1 Ответ

0 голосов
/ 11 июня 2010

Вам нужно будет использовать CustomValidator и обрабатывать его ServerValidate событие (и, необязательно, его ClientValidationFunction для клиентской стороныПроверка).Вы можете сделать один на странице и проверить все строки, или вы можете иметь одну для каждой строки и использовать свойство ControlToValidate, чтобы дать вам контекст для строки, которую вы проверяете.

Любой пример проверки на стороне клиента будет зависеть от вашего макета и любой JavaScript-инфраструктуры, которую вы используете.Это может выглядеть примерно так:

<table>
    <tr>
        <td><asp:TextBox runat="server" ID="TextBox11" /></td>
        <td><asp:TextBox runat="server" ID="TextBox12" /></td>
    </tr>
    <tr>
        <td><asp:TextBox runat="server" ID="TextBox21" /></td>
        <td><asp:TextBox runat="server" ID="TextBox22" /></td>
    </tr>
    <tr>
        <td><asp:TextBox runat="server" ID="TextBox31" /></td>
        <td><asp:TextBox runat="server" ID="TextBox32" /></td>
    </tr>
    <tr>
        <td><asp:TextBox runat="server" ID="TextBox41" /></td>
        <td><asp:TextBox runat="server" ID="TextBox42" /></td>
    </tr>
    <tr>
        <td><asp:TextBox runat="server" ID="TextBox51" /></td>
        <td><asp:TextBox runat="server" ID="TextBox52" /></td>
    </tr>
</table>
<asp:CustomValidator ID="TextBoxPairValidator" runat="server" ControlToValidate="TextBox11" ClientValidationFunction="TextBoxPairValidator_ClientValidate" />

<script type="text/javascript">
    (function () {
        window.TextBoxPairValidator_ClientValidate = function (sender, args) {
            var other = document.getElementById(sender.id.slice(0, -1) + '2');
            args.IsValid = (sender.value === '' && other.value === '')
                           || (sender.value !== '' && other.value !== '');
        };
    }());
</script>

Этот пример, очевидно, предполагает довольно простую компоновку и довольно статическое именование (т. Е. Если ваши элементы управления находятся в контейнере именования, вы не сможете использовать трюк с идентификатором).перейти от одного текстового поля к другому).Надеюсь, этого достаточно, чтобы вы начали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...