【问题标题】:Search Button - Validate textbox before button run搜索按钮 - 在按钮运行之前验证文本框
【发布时间】:2019-01-11 12:22:50
【问题描述】:

我需要在我的 index.cshtml 中运行一个 javascript 函数来清除一些可能不需要的字符和额外空格的文本框。

该网站在 .NET CORE MVC 上运行。

按键代码:

<button onclick="executeValidationTest()" class="btn btn-success ladda-button ladda-button-infinite" data-style="expand-right" type="submit"><i class="fa fa-search"></i> Recherche</button>

问题是......搜索开始时没有先运行我的清理脚本。 结果,我的搜索结果中包含一些我不希望在默认搜索中出现的字符。

我尝试使用另一个按钮,效果很好,但用户讨厌点击多个按钮。

我注意到有一个包含脚本的代码:

@Html.AddResource(PageResourceType.Javascript, @<script>SomeScriptAlreadyInTheFile</script<)

我试图把我的代码放在这里,但它也不起作用。

我的脚本:

   function executerTestDeValidation() {
      console.log("Script call ok");

     
      if (document.getElementById("ISBN").value != "") {
         
         var string = document.getElementById("ISBN").value;

         // OUTPUT
         console.log("Before Clean: " + string);

         // ___________________________________
         // START CLEAN - Use string variable

         // Clear all non numbers
         string = string.replace(/\D/g, "");
         console.log("After Clean: " + string);

         // Check char total numbers
         var n = string.length;
         console.log("Lenght: " + n);

         // Check if full string is multiple of 13 - rest zero
         var rest = n / 13;
         if (n % 13 != 0) {

            // IF DIVISION BY ZERO = ERROR
            // console.log("Lenght: " + n + " is NOK");
            document.getElementById("txtBox").value = "ERROR";

         } else {
            // IF DIVISION BY ZERO = GOOD
            // console.log("Lenght: " + n + " is Good (Divisible par 13 et reste 0)");
            // Add spaces every 13 Chars
            var chuncks = string.match(/.{1,13}/g);
            var string = chuncks.join(" ");
            // console.log("After space split: " + string);
            document.getElementById("ISBN").value = string;

            // Check for last digit verification number on each ISBN number
            // ...
         }
      }
   }

我应该把我的脚本调用放在哪里,以便在执行默认搜索之前按下按钮时运行我的脚本?

最好的问候 瑞

【问题讨论】:

  • 显示 javascript
  • 利用section,放在script标签下
  • 我已经添加了完整的脚本,不确定是否有必要,我只需要知道在默认搜索之前,按下按钮时,我应该在哪里调用脚本以运行。跨度>
  • 这部分是否会让我的脚本在我的按钮中的默认搜索功能之前运行?我的按钮没有代码,所以我怀疑该呼叫是由另一个“侦听器”发出的,该侦听器收集所有文本字段并将搜索午餐到数据库中。我需要找到那个电话并将我的电话放在第一位,并确保我的电话在另一个电话之前终止。
  • 假设这个 HTML 在 &lt;form&gt; 内,那么问题不在于你把代码放在哪里,而是你的按钮是一个 type="submit",这将自动提交表单而不管任何 JavaScript按钮上设置的事件 - 除非您使用 JavaScript 来抑制此行为,然后只有在您认为它有效时才使用脚本手动提交表单。谷歌“JS防止默认”以了解如何。或者你可以在按钮上设置type="button"(如果验证通过,仍然使用JS提交表单)使其默认没有表单提交行为。

标签: javascript .net asp.net-mvc


【解决方案1】:

我用 onKeyUp() 解决了这个问题,但是用户 ADyson 让我找到了一个真正实用的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多