Добавление JavaScript из кода нарушает проверку на странице! Как справиться с этим? - PullRequest
1 голос
/ 13 ноября 2010

У меня есть кнопка, которая должна открывать другую страницу, только если длина текстового поля равна 8. Javascript должен быть добавлен из кода, потому что он не просто вызывает bla.aspx, это больше похоже на bla.aspx? Id = 4 & code = 234 и т. Д. и т.д ...

У меня есть этот код на стороне сервера

button.Attributes.Add("onclick","javascript:window.open(bla.aspx)");

на стороне клиента у меня

<asp:TextBox ID="policyNumberTxt" runat="server" MaxLength="8" CausesValidation="true"></asp:TextBox>

<asp:RegularExpressionValidator ID="policyNumberTxtRev" runat="server"
    ControlToValidate="policyNumberTxt" ErrorMessage="Length must be 8."  
    ValidationExpression="{.{8}.}" ValidationGroup="bla" Display="Dynamic"></asp:RegularExpressionValidator>

<asp:Button ID="printBtn" CssClass="button" Text="Print" runat="server" CausesValidation="true" ValidationGroup="bla" />

Что происходит, когда я нажимаю на кнопку, открывается страница bla.aspx, и даже запускается обратная передача. Валидатор показывает сообщение, но страница открывается и запускается обратный вызов.

Как справиться с этим? Проверка нарушена ...

Спасибо ..

Ответы [ 3 ]

1 голос
/ 13 ноября 2010

Чтобы предотвратить отправку формы, добавьте «return false;»

button.Attributes.Add("onclick", "window.open('bla.aspx'); return false;")

, но это также помешает форме вообще выполнять обратную передачу!

обратите внимание, что переданный URL должен быть заключенв кавычках ... И вам не нужен префикс "javascript:", поскольку 'Pointy' сказал

Я думаю, что регулярное выражение проверки должно быть более строгим, чтобы разрешать только буквы и цифры, подобные этому

ValidationExpression="[A-Za-z0-9]{8}"
0 голосов
/ 13 ноября 2010

Найден ответ здесь

this.cmdSubmit.Attributes.Add("onclick","if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();if(Page_IsValid){window.open('upload_status.aspx','_blank','width=250,height=250');}");
0 голосов
/ 13 ноября 2010

Попробуйте вместо этого поместить логику клика клиента в форму отправки страницы?

...