2014-12-10 2 views
0

Я видел несколько примеров того, как это сделать, но они, похоже, не работают для меня. Сказав это, я делаю это немного иначе, чем примеры, которые я видел, поэтому я не уверен, что то, что я пытаюсь сделать, возможно.Остановить onclick после onclientclick

У меня есть многострочный asp texbox и onclientclick. Я хочу убедиться (среди прочего), что пользователь не перешел на максимальную длину, прежде чем я отправлю событие onclick. Однако это текстовое поле является частью пользовательского элемента управления, который будет использоваться X раз на странице, поэтому я не могу просто захватить элемент управления из Javascript. Мне нужно отправить идентификатор клиента из кода. Поэтому я добавляю событие OnClientClick на кодовое имя и передаю идентификатор client для этого элемента управления. Интересно, вот почему я получаю результаты, которые получаю.

SaveNoteButton.OnClientClick = string.Format("return BeforeSave('{0}');", NoteTextBox.ClientID); 

<asp:Button runat="server" CssClass="casenotes-bluebuttons" ID="SaveNoteButton" Text="Save" OnClick="SaveNoteButton_Click" Enabled="false" /> 

    function BeforeSave(noteCtrl) { 
     var txt = document.getElementById(noteCtrl); 

     if (txt.value.length > 500) { 
      alert("false"); 
      return false; 
     } 
     else { 
      alert("true"); 
      return true; 
     } 
    } 

Таким образом, теоретически свойство OnClientClick добавляется к кнопке SaveNoteButton. Когда он запускается, он передает NotesTextBox.ClientID, js проверяет длину текстового поля, возвращает true или false, тогда событие OnClick срабатывает в зависимости от возвращаемого значения. Но это не так. Я даже попробовал обернуть вызов метода в оповещении, и метод фактически возвращает то, что я ожидаю, но событие OnClick не срабатывает независимо от возвращаемого значения метода. Я даже попытался удалить вызов метода и hardcoding true, и он все равно не срабатывает. Поэтому я знаю, что возвращаемое значение истинно, и все же нет любви OnClick.

ответ

0

Хорошо, это то, что я сделал, чтобы решить эту проблему:

SaveNoteButton.OnClientClick = string.Format("if(!BeforeSave('{0}', '{1}')) return false;", NoteTextBox.ClientID, this._maxLength); 
0

Как ни странно, это был синтаксис при вызове метода js.

SaveNoteButton.OnClientClick = string.Format("return BeforeSave('{0}');", NoteTextBox.ClientID); 

становится

SaveNoteButton.OnClientClick = string.Format("BeforeSave('{0}')", NoteTextBox.ClientID); 

и она работает просто отлично.

+0

Ok, я был неправ. Это все еще не работает. Теперь, независимо от результата BeforeSave(), происходит событие OnClick. – Jeremy

0

Удалить бит Enabled="false". Вот почему событие onclick не срабатывает.

+0

Привет, SmartDev, спасибо за ответ. Однако, если вы перечитаете вопрос, вы увидите, что я пытаюсь остановить событие onclick, если результат onclientclick был ложным. – Jeremy

Смежные вопросы