开发者社区> 问答> 正文

阻断提交的一种情况如何实现?

已解决

如果一个表单内,想要让它实现:数值组件不等于0的情况下,如果不填写另一个文本组件,禁止提交!如何实现?

展开
收起
DRAGON 2023-09-23 14:51:30 103 0
6 条回答
写回答
取消 提交回答
  • 采纳回答

    要实现当数值组件不等于0时,如果未填写另一个文本组件则禁止提交的逻辑,您可以使用JavaScript来进行表单验证。以下是一个示例代码,演示如何实现这个功能:

    <form id="myForm" onsubmit="return validateForm()">
      <label for="numberInput">数值:</label>
      <input type="number" id="numberInput" name="numberInput" required min="0">
    
      <br>
    
      <label for="textInput">文本:</label>
      <input type="text" id="textInput" name="textInput">
    
      <br>
    
      <input type="submit" value="提交">
    </form>
    
    <script>
    function validateForm() {
      // 获取数值组件和文本组件的值
      var numberValue = document.getElementById("numberInput").value;
      var textValue = document.getElementById("textInput").value;
    
      // 判断数值组件是否不等于0且文本组件为空
      if (numberValue !== "0" && textValue === "") {
        alert("请填写文本组件!");
        return false; // 阻止表单提交
      }
    
      return true; // 允许表单提交
    }
    </script>
    

    在上述代码中,我们定义了一个 JavaScript 函数 validateForm() 来进行表单验证。在此函数中,我们获取数值组件和文本组件的值,然后根据条件判断是否允许表单提交。如果数值组件的值不等于0且文本组件的值为空,则弹出警告提示,并返回 false 阻止表单提交;否则,返回 true 允许表单提交。

    2023-09-23 19:58:35
    赞同 展开评论 打赏
  • 要实现这种情况,你可以使用 JavaScript 来检查表单的数值组件的值,并根据条件禁用或启用提交按钮。以下是一个示例代码:

    HTML 代码:

    <form id="myForm">
      <input type="number" id="numberInput" required>
      <input type="text" id="textInput">
      <button type="submit" id="submitButton">提交</button>
    </form>
    

    JavaScript 代码:

    document.getElementById('myForm').addEventListener('submit', function(event) {
      var numberInput = document.getElementById('numberInput');
      var textInput = document.getElementById('textInput');
    
      if (numberInput.value !== '0' && textInput.value === '') {
        event.preventDefault(); // 阻止表单提交
        alert('请填写文本组件!');
      }
    });
    

    在上面的示例中,我们首先通过 getElementById 方法获取数值组件和文本组件的引用。然后,在表单的 submit 事件监听器中,我们检查数值组件的值是否不等于 0,并且文本组件的值是否为空。如果满足这两个条件,我们使用 preventDefault 方法阻止表单的默认提交行为,并且弹出一个提示框提示用户填写文本组件。

    2023-09-30 08:22:55
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,可以通过以下方式实现:

    1. 在表单中将数值组件和文本组件绑定。假设数值组件的名称为"number",文本组件的名称为"text"。

    2. 在提交表单的按钮或方法中,先获取数值组件的值。

    3. 判断数值组件的值是否等于0。如果不等于0,则继续获取文本组件的值。

    4. 判断文本组件的值是否为空。如果为空,则禁止提交表单。

    以下是一个示例代码:

    const submitBtn = document.getElementById('submitBtn');
    const numberInput = document.getElementById('numberInput');
    const textInput = document.getElementById('textInput');
    
    submitBtn.addEventListener('click', (e) => {
      e.preventDefault(); // 阻止默认提交行为
    
      const numberValue = Number(numberInput.value);
    
      if (numberValue !== 0) {
        const textValue = textInput.value;
    
        if (textValue.trim() === '') {
          alert('请填写文本组件!');
          return;
        }
    
        // 可以继续提交表单
      } else {
        alert('数值组件的值不能为0!');
      }
    });
    

    在这个示例代码中,当数值组件的值不等于0的时候,会进一步判断文本组件是否为空。如果为空,则会弹出提示框,并阻止表单提交。如果文本组件有值,则可以继续提交表单。如果数值组件的值等于0,则会弹出提示框,阻止表单提交。

    2023-09-25 08:47:49
    赞同 展开评论 打赏
  • 可以通过在表单提交时添加校验逻辑来实现该需求。具体实现方式如下:

    1. 给数值组件添加一个事件监听器,当其值发生变化时触发校验函数。

    2. 在校验函数中判断数值组件的值是否为0,如果不为0则继续执行下一步校验;否则直接返回,不进行提交。

    3. 给文本组件添加一个事件监听器,当其值发生变化时触发校验函数。

    4. 在校验函数中判断文本组件的值是否为空,如果为空则弹出提示框或进行其他操作(比如禁用提交按钮),然后返回;否则直接返回,不进行提交。

    5. 如果以上两个校验函数都通过,则允许提交表单。

    以下是一个简单的示例代码:

    HTML代码:

    <form id="myForm">
      <input type="number" id="numInput" />
      <input type="text" id="textInput" />
      <button type="submit">Submit</button>
    </form>
    

    JavaScript代码:

    const numInput = document.getElementById('numInput');
    const textInput = document.getElementById('textInput');
    const form = document.getElementById('myForm');
    const submitButton = form.querySelector('button[type="submit"]');
    
    function validateForm() {
      if (numInput.value !== '0') {
        if (textInput.value === '') {
          alert('Please enter a value for the text field!');
          return false; // 阻止表单提交
        } else {
          return true; // 允许表单提交
        }
      } else {
        return false; // 阻止表单提交
      }
    }
    
    numInput.addEventListener('input', () => {
      if (validateForm()) {
        form.submit(); // 如果表单验证通过,则提交表单
      } else {
        // 如果表单验证失败,则禁止提交表单(例如禁用提交按钮)
        submitButton.disabled = true;
      }
    });
    
    2023-09-23 19:29:21
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    要在一个表单中实现这样的逻辑,即数值组件不等于0时禁止提交,除非填写了另一个文本组件,您可以使用前端JavaScript来实现以下步骤:

    1. 监听数值组件的值变化事件:通过JavaScript代码,监听数值组件的值变化事件。

    2. 检查数值组件的值是否为0:在值变化事件处理程序中,获取数值组件的值,并检查其是否等于0。

    3. 根据数值组件的值设定另一个文本组件的状态:根据数值组件的值,设置另一个文本组件的状态(如禁用/启用)。

    4. 监听表单提交事件:在表单提交事件处理程序中,再次检查数值组件的值和另一个文本组件的状态。如果数值组件的值不等于0且另一个文本组件没有填写,则阻止表单的默认提交行为。

    下面是一个示例代码片段,演示如何实现上述逻辑:

    // 监听数值组件的值变化事件
    const numberInput = document.getElementById('numberInput');
    const textInput = document.getElementById('textInput');
    
    numberInput.addEventListener('change', function() {
      const numberValue = parseInt(numberInput.value);
    
      // 检查数值组件的值是否为0
      if (numberValue !== 0) {
        // 根据数值组件的值设定另一个文本组件的状态
        textInput.disabled = false;
      } else {
        textInput.disabled = true;
      }
    });
    
    // 监听表单提交事件
    const form = document.getElementById('form');
    form.addEventListener('submit', function(event) {
      const numberValue = parseInt(numberInput.value);
    
      // 检查数值组件的值和另一个文本组件的状态
      if (numberValue !== 0 && textInput.value === '') {
        // 阻止表单默认提交行为
        event.preventDefault();
        alert('请填写另一个文本组件!');
      }
    });
    

    请根据您实际的HTML结构和组件ID进行相应的调整。这只是一个简单示例,具体实现可能因您的具体需求和技术栈而有所不同。

    2023-09-23 17:03:58
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    可以在「页面-设置-提交规则」中设置提交规则进行表单校验,当用户的提交的数据没有通过校验规则,则会在表单项下方展示错误信息并阻止用户提交表单数据,

    校验设置宜搭平台提供两种表单设置方案,

    内置校验规则:

    宜搭平台为每个表单组件都内置了一些常用的校验规则,用户只要通过简单的设置并启用该规则就可以了,例如上面的最小年纪设置,我们通过如下配置便可轻松实现:

    自定义校验规则:

    宜搭内置的表单项校验方法难免会有覆盖不到的情况,因此宜搭还为每个表单项组件增加了一个自定义规则设置的方案,通过函数来控制表单校验结果,自定义校验规则的函数描述如下所示:

    // value 为表单项当前的值,返回boolean类型判断校验是否通过 function validateRule(value: any): boolean;

    API

    表单校验除了在表单提交的时候进行校验,还能够通过前端API进行手动触发,如下所示:

    export function validate() {   // 执行输入框组件的校验,如果校验失败则在 console 中打印 errors 和 values   this.$('textField_kyz78exp').validate((errors, values) => {     console.log(JSON.stringify({errors, values}, null, 2));   }); }

    2023-09-23 16:28:15
    赞同 1 展开评论 打赏
滑动查看更多
问答地址:
关联地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载