Asp: RadioButtonList по-прежнему отправляет сообщения обратно на сервер, даже если проверка клиента завершается с ошибкой?

StackOverflow https://stackoverflow.com/questions/261547

Вопрос

Этот запрос связан с это тот, который я задал вчера.У меня есть список переключателей на моей странице asp.net, определенный следующим образом:

<asp:RadioButtonList ID="rdlSortBy" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" AutoPostBack="True" >
       <asp:ListItem Selected="True">Name</asp:ListItem>
        <asp:ListItem>Staff No</asp:ListItem>
</asp:RadioButtonList>

На стороне клиента я выполняю следующие проверки:

rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"

Проблема в том, что проверка Javascript выполняется так, как ожидалось.Отображается сообщение, и я ожидаю, что останусь на странице до тех пор, пока пользователь не сохранит изменения, вместо этого страница публикуется обратно, и фактически я теряю несохраненные изменения.

Что могло пойти не так?

Это было полезно?

Решение

Я исправил это, проблема заключалась в том, что я прикреплял "onclick" списка RadioButtonList вместо этого к отдельным переключателям.

Это и есть решение проблемы:

rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
    rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"

Другие советы

Тот самый OnClick выполняется код, который вы используете для "проверки", а затем выполняется код, который отправляет форму обратно, которую вводит сам элемент управления.

Вам нужно перехватить этот процесс обратной передачи и остановить его до того, как он отправит форму на стороне клиента.Лучшим способом сделать это было бы с помощью CustomValidator и, в частности, свойство "ClientValidationFunction".Это позволит вашему JavaScript сигнализировать о том, что обратная отправка не должна происходить из-за ошибки проверки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top