一个WebForm,Form里面有两个字段,txtUserName,txtPwd,再有一个Button用来提交。在提交前我会验证一下是否为空,验证写在js里面,方法的名字叫checkNull,我事件放在page_load里是这样的:
//js
function checkNull(user,pwd)
{
  if(user == null || pwd ==null)
      alert("pls reinput");
  else
      alert("user:"+user,"pwd"+pwd);
}
//page_load
btnLogin.Attributes["onclick"]=string.Format("retun checkNull('{0}','{1}'),txtUserName,txt,txtPwd)但是有个问题,我每次在js里得到的user,pwd的值都是上一次的值为什么?困惑中

解决方案 »

  1.   

    应该在客户端取document.getElementById("txtUserName").value
      

  2.   

    这个……………………
    建议放在客户端验证<asp:Button id="btnLogin" onClientClick = "return checkNull(docuemnt.getElementById("txtUserName"),docuemnt.getElementById("txtPwd"))" runat="server">
      

  3.   

    btnLogin.Attributes["onclick"]=string.Format("retun checkNull('{0}','{1}'),txtUserName,txt,txtPwd)
    注意:retun 错了
    btnLogin.Attributes["onclick"]="retun checkNull("+ txtUserName +","+ txtPwd +")";
      

  4.   

    对,在客户端来验证,或者直接用document.getElementById("txtUserName").value
    这样在客户端获取验证。
      

  5.   

    //这样不用再传递值,用JS来获取
    btnLogin.Attributes["onclick"]="retun checkNull()";document.getElementById("txtUserName").value
      

  6.   

    修改的方法已经前面的说了,我说说为什么哦你在page_load中入这Attributes.add
    只有在page_load完成,才算了加载完页面
    而你在页面加载完成之前就传递了参数,参数的来源正上页面上的textbox里的page_load(!ispostback)执行(也就是你请求这个页面的时候)txtUserName txtPwd应该是空的单击,传进去就是空的,所以你在单击之前写入textbox的值并没有传入,单击后又会调用page_load(ispostback)这时候txtUserName txtPwd就有值了但是还没传给js 函数你可以做我所说的动作查看你页面的源码,或者调式