【问题标题】:How to create a text verification box如何创建文本验证框
【发布时间】:2014-06-12 10:38:29
【问题描述】:

我试图弄清楚如何创建一个文本验证框,该文本验证框假设在单击按钮时出现,并且在用户必须输入某个值之后,如果该值正确,则按钮应继续正常工作功能。

这是我的代码:

<div id="texto-cupon" class="panel-boton-canjear">
  <?php 
    if ($comprobarCanjear == 1 || $comprobarCanjear == 2 || $comprobarCanjear == 3) {
  ?>
  <input disabled=disabled id="canjear" class="btn" type="button" value="<?php echo JText::_('COM_CUPHONEO_BOTON_CANJEAR'); ?>" data-id="<?php echo $valor->item_id; ?>" data-codigo="<?php echo $value->value; ?>" />
  <?php 
    } elseif($comprobarCanjear == 4) {
  ?>
  <input id="canjear" class="btn btn-info" type="button" value="<?php echo JText::_('COM_CUPHONEO_BOTON_CANJEAR'); ?>" data-id="<?php echo $valor->item_id; ?>" data-codigo="<?php echo $value->value; ?>" />
  <?php 
    }
  ?>
</div>

在下面的elseif($comprobarCanjear == 4) 内是按钮出现的地方,当点击这个按钮时,应该会出现一个文本框。

此按钮正在调用下面的 ajax 代码:

<script>
jQuery(function(){
    jQuery("#canjear").click(function(e){
        if(this.tagName==="A"){
            e.preventDefault();
        }

        jQuery.ajax({
            url: "index.php?option=com_cuphoneo&task=miscuponess.canjearCupon",
            type: "POST",
            data: {id:jQuery(this).data("id"), codigo:jQuery(this).data("codigo")}
            success: window.location.href = "index.php?option=com_cuphoneo&view=miscuponess&layout=default"
        });
    });
});
</script>

【问题讨论】:

  • 您能告诉我,您遇到了什么问题吗?我注意到的唯一一点是 ajax 请求可能不起作用。
  • 在你的成功函数中,打开一个带有输入字段和验证函数的弹出窗口,然后在验证后继续到 window.location.href ...
  • @NishanSenevirathna ajax 请求工作正常。我没有注意到任何事情,我只是不知道如何做我需要的:(
  • @webkit 你能举个例子吗?我不太擅长 jQuery atm
  • 当然,我会在下面的答案中给你写 jquery .. 你会做 html/css .. 还要澄清一下用户应该在文本字段中输入什么值?

标签: javascript php jquery html button


【解决方案1】:

试试这个,但一定要把一些东西改成你自己的。对话框需要 jQuery UI。

示例 HTML

<button id="canjear">Click me</button>
<div class="dialog" style="display:none;">
    <input type="text" id="prompt" placeholder="Insert value hello" />
    <button id="test">Submit</button>
</div>

JS

jQuery(function () {
    jQuery("#canjear").click(function (e) {
        jQuery('.dialog').dialog({
            title: 'Prompt',
            modal: true,
            open: function (event, ui) {
                jQuery('#test').click(function (evt) {
                    var theValue = jQuery('#prompt').val();
                    if (theValue == "hello") {
                        jQuery.ajax({
                            url: "index.php?option=com_cuphoneo&task=miscuponess.canjearCupon",
                            type: "POST",
                            data: {
                                id: jQuery(e.currentTarget).data("id"),
                                codigo: jQuery(e.currentTarget).data("codigo")
                            }
                            success: function (response) {
                                window.location.href = "index.php?option=com_cuphoneo&view=miscuponess&layout=default"
                            }
                        });
                    }
                });
            }
        });

    });
});

【讨论】:

    【解决方案2】:

    如果您不担心样式,您可以使用浏览器内置的“promt()”函数。否则,您可以创建自己的窗口。第一个选项很简单。执行以下操作。

    var input = prompt("Title");
    if( input != null && input == "expectedValue")
    {
        window.location.href = "index.php?option=com_cuphoneo&view=miscuponess&layout=default"
    }
    else
    {
        //invalid input
    }
    

    【讨论】:

      【解决方案3】:

      我认为你需要这样的东西:

      编辑:页面输入

      HTML

      ?>
        <input type="text" id="txt" class="hidden">
        <input id="canjear" class="btn btn-info" type="button"...
      

      jQuery

      ​​>
      $("#canjear").on('click', btnClick);
      
      function btnClick() {
          $("#txt").show();
          $(this).off().on('click', function() {
              jQuery.ajax({
                  url: "index.php?option=com_cuphoneo&task=miscuponess.canjearCupon",
                  type: "POST",
                  data: {id:jQuery(this).data("id"), codigo:jQuery(this).data("codigo")},
                  success: function (data) {
                      // check against codigo ** codigo is returned by the server right??
                      if ($("#txt").val() != data.codigo) {
                          // invalid ** write code for invalid input.
                          alert("Please enter valid whatever into the field.");
                          return false;
                      } else {
                          // valid input
                          window.location.href = "index.php?option=com_cuphoneo&view=miscuponess&layout=default";
                      }
              });
          }
      }
      

      也许这更接近你想要的......

      【讨论】:

      • 有没有办法只使用我必须验证字段的按钮而不是新按钮?
      • 您想要单击相同的按钮打开弹出窗口,然后使用相同的按钮在弹出窗口中提交表单?
      • 你真的需要一个弹出窗口,还是你的意思是让这个输入字段出现在原始按钮上方?
      • 我“喜欢”的方式是,当用户单击按钮时,应该出现一个文本字段,并且一旦用户输入正确的值,它就应该继续运行我相信的 ajax。
      猜你喜欢
      • 2022-01-21
      • 2023-04-02
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      相关资源
      最近更新 更多