【问题标题】:Javascript alert box and confirmation afterJavascript警报框和确认后
【发布时间】:2012-12-14 04:57:46
【问题描述】:

我想创建一个 javascript 来检查文本框的值,所以如果文本框为空白,它将不会进入下一页。并且检查后(如果所有条件都为真),它将返回文本框的结果。

我已经创建了这个 javascript:

function cekdata(myform)
{
    var id = document.myform.clientid.value;
        var nama = document.myform.nama.value;
        var divisi = document.myform.divisi.value;
        var way = document.getElementById('twoway').value;
        var ori = document.myform.lokasi.value;
        var desti = document.myform.tujuan.value;
        var ket = document.myform.keterangan.value;
        var tpergi = document.myform.tglb.value;
        var jpergi = document.myform.jamb.value;
        var mpergi = document.myform.menitb.value;
        var pegi = tpergi+', '+jpergi+':'+mpergi;
        var tplg = document.myform.tglp.value;
        var jplg = document.myform.jamp.value;
        var mplg = document.myform.menitp.value;
        var plg = tplg+', '+jplg+':'+mplg;
  if (document.myform.clientid.value == "")
  {
    alert("Please Fill Your ID");
    myform.clientid.focus();
    return false;
  }
  else
  if (document.myform.nama.value == "")
  {
    alert("Please Fill Passenger Name");
    myform.nama.focus();
    return false;
  }
  else
  if (document.myform.lokasi.value == "")
  {
    alert("Please Fill Origin Location");
    myform.lokasi.focus();
    return false;
  }
  else
  if (document.myform.tujuan.value == "")
  {
    alert("Please Fill Your Destination");
    myform.tujuan.focus();
    return false;
  }
  else
  if (document.myform.tglb.value == "")
  {
    alert("Please Fill Departure Date");
    myform.tglb.focus();
    return false;
  }
  else
  if (document.myform.novehicle.value == "")
  {
    alert("Please Fill Vehicle Number");
    myform.novehicle.focus();
    return false;
  }
  else
  if (document.myform.driverid.value == "")
  {
    alert("Please Fill Driver ID");
    myform.driverid.focus();
    return false;
  }
  else
  if(document.getElementById('twoway').checked)
  {
      if (document.myform.tglp.value == "")
      {
        alert("Please Fill Return Date");
        myform.tglp.focus();
        return false;
      }
      else
      if (document.myform.tglb.value > document.myform.tglp.value)
      {
        alert("Return date must bigger than departure date");
        myform.tglp.focus();
        return false;
      }
  }
  else
  {
        var a = window.confirm("CONFIRMATION :\nID : " +id+"\nName : "+nama+"\nDivision : "+divisi+"\nOne Way : "+way+"\nOrigin : "+ori+"\nDestination : "+desti+"\nNotes : "+ket+"\nDeparture : "+pegi+"\nArrived :"+plg);
        if (a==true)
        {
            return true;
        }
        else
        {
            return false;
        }
  }
}

我这样调用这个函数:

<form name="myform" onsubmit="return cekdata(this);" method="POST" action="<?php $_SERVER["PHP_SELF"]; ?>">

但我得到的是确认框永远不会出现,它返回 true(并转到下一页)。那么,如何改变这个条件,让我的确认框先出现,然后点击OK后进入下一页,如果CANCEL,什么都不做?

【问题讨论】:

    标签: php javascript


    【解决方案1】:
    *Just make slight changes in your javascript just passevent on form submit*
    
    
    <input type="submit" value="Submit" name="submit" onClick="return cekdata(this,event);" />
    

    当你的文本框为空或 null 时,写 event.preventDefault() 而不是 return false;

    function cekdata(myform,evt)
    {
    var id = document.myform.clientid.value;
        var nama = document.myform.nama.value;
        var divisi = document.myform.divisi.value;
        var way = document.getElementById('twoway').value;
        var ori = document.myform.lokasi.value;
        var desti = document.myform.tujuan.value;
        var ket = document.myform.keterangan.value;
        var tpergi = document.myform.tglb.value;
        var jpergi = document.myform.jamb.value;
        var mpergi = document.myform.menitb.value;
        var pegi = tpergi+', '+jpergi+':'+mpergi;
        var tplg = document.myform.tglp.value;
        var jplg = document.myform.jamp.value;
        var mplg = document.myform.menitp.value;
        var plg = tplg+', '+jplg+':'+mplg;
    if (document.myform.clientid.value == "")
    {
    alert("Please Fill Your ID");
    myform.clientid.focus();
    

    evt.preventDefault(); }

    【讨论】:

    • 在我删除 event.prevent 并在表单标签中获取方法后,它现在可以工作了......感谢您的回答
    【解决方案2】:

    试试这个:

    删除您的 last else 部分并粘贴到您的 javascript 函数末尾的行下方。

    删除以下行:

    var a = window.confirm("CONFIRMATION :\nID : " +id+"\nName : "+nama+"\nDivision : "+divisi+"\nOne Way : "+way+"\nOrigin : "+ori+"\nDestination : "+desti+"\nNotes : "+ket+"\nDeparture : "+pegi+"\nArrived :"+plg);
    

    改用这个,

    var a = window.confirm("Are you sure?");
    
    if (a==true)
    {
         return true;
    }
    else
    {
         return false;
    }
    

    【讨论】:

    • 试试我的更新。如果您的最后一个 var a = ... 行中可能缺少任何值。
    • 我不知道为什么,但是当我使用没有 event.prevent 的 nitin-sharma 方法时,它现在可以工作了...感谢您的任何回答..
    【解决方案3】:

    我会建议你把 cekdata(this) 放在你的 submit tag 而不是 form tag 中。喜欢

    <input type="submit" value="Submit" name="submit" onClick="return cekdata();" />
    

    当你这样做时

    var id = document.myform.clientid.value;
    

    那你为什么又用同样的东西

    if (document.myform.clientid.value == "")
    

    更好的使用

    var id = document.myform.clientid;
    
    if (id.value == "")
    {
       alert("Please Fill Your ID");
       id.focus();
       return false;
    }
    

    【讨论】:

    • 好吧,我正在为我的 JS 添加新功能,这就是它这样写的原因。但是什么也没发生,只是做同样的事情,不先显示确认就转到下一页
    • 我建议您更改js函数中传递参数的名称,即“myform”,因为它与表单名称相同。
    • 它是......验证工作......只是确认不起作用......但是在像 nitin-sharma 那样更改我的代码之后,没有通风口......防止它正常工作......谢谢任何答案..
    【解决方案4】:

    像这样更改代码:

    function cekdata(myform)
    {
        var id = document.myform.clientid.value;
        var nama = document.myform.nama.value;
        var divisi = document.myform.divisi.value;
        var way = document.getElementById('twoway').value;
        var ori = document.myform.lokasi.value;
        var desti = document.myform.tujuan.value;
        var ket = document.myform.keterangan.value;
        var tpergi = document.myform.tglb.value;
        var jpergi = document.myform.jamb.value;
        var mpergi = document.myform.menitb.value;
        var pegi = tpergi+', '+jpergi+':'+mpergi;
        var tplg = document.myform.tglp.value;
        var jplg = document.myform.jamp.value;
        var mplg = document.myform.menitp.value;
        var plg = tplg+', '+jplg+':'+mplg;
      if (id == "")
      {
        alert("Please Fill Your ID");
        myform.clientid.focus();
        return false;
      }
      else
      if (nama == "")
      {
        alert("Please Fill Passenger Name");
        myform.nama.focus();
        return false;
      }
      else
      if (ori == "")
      {
        alert("Please Fill Origin Location");
        myform.lokasi.focus();
        return false;
      }
      else
      if (desti == "")
      {
        alert("Please Fill Your Destination");
        myform.tujuan.focus();
        return false;
      }
      else
      if (tpergi == "")
      {
        alert("Please Fill Departure Date");
        myform.tglb.focus();
        return false;
      }
      else
      if(document.getElementById('twoway').checked)
      {
          if (tplg == "")
          {
            alert("Please Fill Return Date");
            myform.tglp.focus();
            return false;
          }
          else
          if (tpergi > tplg)
          {
            alert("Return date must bigger than departure date");
            myform.tglp.focus();
            return false;
          }
      }
      else
      {
            var a = window.confirm("CONFIRMATION :\nID : " +id+"\nName : "+nama+"\nDivision : "+divisi+"\nOne Way : "+way+"\nOrigin : "+ori+"\nDestination : "+desti+"\nNotes : "+ket+"\nDeparture : "+pegi+"\nArrived :"+plg);
            if (a==true)
            {
                return true;
            }
            else
            {
                return false;
            }
      }
    }
    

    然后就可以了……

    【讨论】:

      【解决方案5】:

      我建议使用 Jquery 而不是 Javascript。

      这是我为您制作的简短而甜蜜的代码,请随意使用!

      JQUERY 代码

      $(document).ready(function() {
        $('#submit').click(function(){
           var id = $('#id').val();
           var dataString = 'id='+ id;
           if(id==''){
              alert("Please Fill Your ID");
              $('#id').focus();
              return false;  
               }
           else if(confirm("Are you sure? Your id = "+id))
              {
                $.ajax({
                type: "POST",
                url: "ajxRegistration.php",
                data: dataString,
                cache: false,
                success: function(e)
                 {
                e.stopImmediatePropagation();
                 }
           });
            return false;
          }
          });
      })
      

      【讨论】:

      • 感谢分享...我稍后会尝试,因为我的客户需要它很快,我将使用我的旧 JS...:D
      【解决方案6】:

      试试这个 -

      if(confirm('Are you sure?'))
          return true;
       else
          return false; 
      

      【讨论】:

        猜你喜欢
        • 2010-11-12
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        • 2011-08-10
        • 2019-03-11
        相关资源
        最近更新 更多