【问题标题】:perform 3 javascript functions on single button click单击单个按钮执行 3 个 javascript 函数
【发布时间】:2023-03-15 08:55:01
【问题描述】:

我正在使用 3 个 javascript 函数进行文本字段验证,

  1. 正确输入所有字段后验证所有字段
  2. 是/取消确认也应该与 带有文本填充值的弹出窗口显示在页面中以验证输入的值是否正确 一旦我选择是,如果选择否,我的按钮单击事件应该发生,什么都不会发生。弹出窗口可以由用户关闭

这是我的 js 脚本,

我正在验证我的所有文本字段并获得确认框是/取消但弹出窗口页面未显示

<script type="text/javascript">

function UserDetailsConfirmation() {
    return confirm("Are you sure you want to add this ?");
    return openwin();
}

function openwin() {
   window.open('PopupForConfirm.aspx?name1=' + name + '&age1=' + age + '&gen=' + gender + '', 'open_window', ' width=640, height=480, left=0, top=0');
}
function validate() {

    var name= document.getElementById('<%=this.txtname.ClientID %>');
    var age= document.getElementById('<%=this.txtage.ClientID %>');
    var gender= document.getElementById('<%=this.txtgender.ClientID %>');

    if (name.value) == "") {
        alert("Please Enter Name");
        name.focus();
        return false;
    }
    else if (age.value) == "") {
        alert("Please Enter age");
        age.focus();
        return false;
    }
    else if (gender.value) == "") {
    alert("Please enter gender");
    gender.focus();
    return false;
    }

else if (!UserDetailsConfirmation()) {
    return false;
    }
    else {
        return true;
    }
}
</script>

【问题讨论】:

  • 只是一个通知;使用 javascript 作为验证并不好,因为用户可以在他的浏览器上编辑 javascript。
  • 为此我还做了服务器端验证,所以不用担心
  • 假设您使用的是 asp.net webforms 而不是 MVC,请使用 ASP.nets 验证控件,通常比alerts 更好的体验。我也会跳过弹出确认。让页面自行提交,隐藏表单并显示带有输入数据的asp:panel。如果单击“是”,您是否有数据库内容,如果没有/取消,隐藏 asp:panel 并重新显示表单,所有数据应该仍然存在。计划 B 将使用 JQuery 或类似方法进行“Inpage”确认。
  • 使用 ASP.net ajax 工具包模态弹出扩展程序的 inpage 确认示例:nickstips.wordpress.com/2010/07/12/…
  • 你真的需要让你的用户确认两次吗?!

标签: javascript asp.net


【解决方案1】:

你在调用 openwin 之前就返回了。怎么可能达到?怎么样:

function UserDetailsConfirmation() {
  return confirm("Are you sure you want to add this ?") && openwin();
}

顺便说一句:

if (!UserDetailsConfirmation()) {
  return false;
}
else {
  return true;
}

归结为:

return UserDetailsConfirmation();

【讨论】:

  • 仅执行验证是/取消并且不执行弹出窗口
  • 不管前面发生了什么。您永远无法越过“return Confirm("Are you sure you want to add this ?");" 这一行。然后你只调用弹出窗口打开器,即从不。
【解决方案2】:
<script type="text/javascript">

function UserDetailsConfirmation() {
    var r = confirm("Are you sure you want to add this ?");
    if (r == true) {
       openwin();
    } else {
    return false;
    }
  }

function openwin() {
   window.open('PopupForConfirm.aspx?name1=' + name + '&age1=' + age + '&gen=' + gender + '', 'open_window', ' width=640, height=480, left=0, top=0');
}
function validate() {

    var name= document.getElementById('<%=this.txtname.ClientID %>');
    var age= document.getElementById('<%=this.txtage.ClientID %>');
    var gender= document.getElementById('<%=this.txtgender.ClientID %>');

    if (name.value) == "") {
        alert("Please Enter Name");
        name.focus();
        return false;
    }
    else if (age.value) == "") {
        alert("Please Enter age");
        age.focus();
        return false;
    }
    else if (gender.value) == "") {
    alert("Please enter gender");
    gender.focus();
    return false;
    }

else if (!UserDetailsConfirmation()) {
    return false;
    }
    else {
        return true;
    }
}
</script>

我已经稍微更改了您的代码...虽然不需要打开弹出返回 我认为这已经足够了

【讨论】:

  • 但我的弹出窗口没有打开
  • function openwin() { window.open("PopupForConfirm.aspx?name1=" + name + "&age1=" + age + "&gen=" + gender, "Popup", "toolbar=no , location=no,status=yes,menubar=no,scrollbars=yes,resizable=no, width=900,height=500,left=430,top=100");返回假; }
  • 试试这个@BeginnerStack1
  • 再次遇到同样的问题,没有弹出窗口弹出
  • @BeginnerStack1 请在 chrome 浏览器中打开页面并单击 f12 并再次刷新它。然后点击按钮..如果有任何问题和错误将显示..
【解决方案3】:

在你的 onclick 上试试这个,调用 UserDetailsConfirmation:

<script type="text/javascript">

function UserDetailsConfirmation() {
    if(validate() == true)
    {
        var r = confirm("Are you sure you want to add this ?");
        if (r == true) {
            openwin();
        }
    } else {
        alert('Something went wrong');
    }
  }

function openwin() {
   window.open('PopupForConfirm.aspx?name1=' + name + '&age1=' + age + '&gen=' + gender + '', 'open_window', ' width=640, height=480, left=0, top=0');
}
function validate() {

    var name= document.getElementById('<%=this.txtname.ClientID %>');
    var age= document.getElementById('<%=this.txtage.ClientID %>');
    var gender= document.getElementById('<%=this.txtgender.ClientID %>');

    if (name.value) == "") {
        alert("Please Enter Name");
        name.focus();
        return false;
    }
    else if (age.value) == "") {
        alert("Please Enter age");
        age.focus();
        return false;
    }
    else if (gender.value) == "") {
        alert("Please enter gender");
        gender.focus();
        return false;
    }
    else{
        return true;
    }
}
</script>

修改选项 2

这实际上是基于你的代码..

<script type="text/javascript">

function UserDetailsConfirmation() {
    return confirm("Are you sure you want to add this ?");
}

function openwin() {
   window.open('PopupForConfirm.aspx?name1=' + name + '&age1=' + age + '&gen=' + gender + '', 'open_window', ' width=640, height=480, left=0, top=0');
}
function validate() {

    var name= document.getElementById('<%=this.txtname.ClientID %>');
    var age= document.getElementById('<%=this.txtage.ClientID %>');
    var gender= document.getElementById('<%=this.txtgender.ClientID %>');

    if (name.value) == "") {
        alert("Please Enter Name");
        name.focus();
        return false;
    }
    else if (age.value) == "") {
        alert("Please Enter age");
        age.focus();
        return false;
    }
    else if (gender.value) == "") {
        alert("Please enter gender");
        gender.focus();
        return false;
    }
    else if (UserDetailsConfirmation() == true) {
        openwin();
    }
    else{
        return false;
    }

}
</script>

【讨论】:

  • 我应该在哪里调用 UserDetailsConfirmation()??
  • 按钮的点击事件
  • 它只触发第一个函数
  • 我认为问题出在我的弹出脚本上,因为它没有被触发
猜你喜欢
  • 1970-01-01
  • 2013-02-04
  • 2011-03-15
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
相关资源
最近更新 更多