2012-06-21 91 views
3

是否有任何理由为什么下面将无法正常工作,它似乎在每个场景中工作,除了下面的一个:原型函数没有被调用

我的HTML/asp.net

<div class="submitContainerConfirm" id="submit_Div">  
    <asp:PlaceHolder runat="server" id="phContinue"> 
     <asp:ImageButton CausesValidation="false" CssClass="ShowPleaseWait button" runat="server" ID="ibtnContinue" OnClick="ibtnContinue_OnClick" /> 
    </asp:PlaceHolder> 
</div> 

我原型

function pageLoad() { 

$$(".ShowPleaseWait").each(function (el) { 
    el.observe("click", function (event) { 
     if (Page_IsValid) { 
      el.hide(); 
      el.insert({ after: '<img src="/content/images/processing.gif" /> Please Wait...' }); 
      alert('Is Valid'); 
     } 
     alert('Is not Valid'); 
    }); 
}); 

} 

尝试二:

Event.observe(window, 'load', function() { 

Event.observe("click", function (event) { 
    if (Page_IsValid) { 
     event.hide(); 
     event.insert({ after: '<img src="/content/images/processing.gif" /> Please Wait...' }); 
     alert('Is Valid'); 
    } 
    alert('Is not Valid'); 
}); 

Event.observe("click", function (event) { 
    if (Page_IsValid) { 
     event.hide(); 
     event.insert({ after: '<img src="/content/images/processing.gif" /> Processing...' }); 
     alert('Is Valid'); 
    } 
    alert('Is not Valid'); 
}); 

}); 

//这也行不通。 请不要jquery。

Example of asp rendered in html + prototypejs bizarrely not working.

+0

在它不工作的方式是什么? – Dancrumb

+0

由于在点击功能不会运行/调用/调用。 – Anicho

回答

3

在你的第二次尝试,你是不是为observe事件监听指定任何element,它怎么会知道点击了哪个元素?

试试这个:

Event.observe(window, 'load', function() { 
    $$('.ShowPleaseWait').each(function(el) { 
     el.observe('click', function(ev) { 
      if (Page_IsValid) { 
       el.hide(); 
       el.insert({ 
        after: '<img src="/content/images/processing.gif" /> Please Wait...' 
       }); 

       alert('Is Valid'); 
      } 

      alert('Is not Valid'); 
     }); 
    }); 
}); 

UPDATE

看到screenshot of generated page by JSFiddle,这是this小提琴的直接输出

+0

感谢您的帮助,在jsfiddle中得到了这一点,但似乎仍然执行http://jsfiddle.net/VUPKx/3/ – Anicho

+2

这是因为JSFiddle已经有一个onload事件,如果你删除它,你会看到它实际上火灾,看到更新在这里:http://jsfiddle.net/VUPKx/5/ – epoch

+0

@Anicho,这是否回答你的问题? – epoch

1

对不起,我不能在此刻发表评论,与我现在看,虽然看起来没有Page_IsValid会被触发,因为表单没有验证控件。通过使用@epochs JS解决方案,您可以触发预期结果。

注:我没有使用任何事件处理您的OnClick事件

查看是否存在以下有助于通过增加样本文本框强制验证的情况发生......

<div class="submitContainerConfirm" id="submit_Div">  
<asp:PlaceHolder runat="server" id="phContinue"> 
    <asp:TextBox ID="required" runat="server"></asp:TextBox> 
    <asp:RangeValidator 
     ID="rangeValidator" 
     ErrorMessage="Enter 0-10" 
     runat="server" 
     MinimumValue="0" 
     MaximumValue="10" 
     ControlToValidate="required"></asp:RangeValidator> 
    <asp:ImageButton CausesValidation="false" CssClass="ShowPleaseWait button" runat="server" ID="ibtnContinue" OnClick="ibtnContinue_OnClick" /> 
</asp:PlaceHolder> 

+0

在epochs jsfiddle示例中,他添加了var Page_IsValid = true,并且在aspnet页面中我测试了它被正确命中。 – Anicho