【问题标题】:Disabled or remove onClick attributes of the button if a certain field is empty in SuiteCRM如果 SuiteCRM 中的某个字段为空,则禁用或删除按钮的 onClick 属性
【发布时间】:2022-12-09 12:09:13
【问题描述】:

再会!

我打算添加一个 javascript,如果某个字段为空,它将删除 onclick 属性。顺便说一句,我修改了我的代码,因为我对此使用了不同的方法:

首先,我添加了一个 after_ui_frame 逻辑挂钩并使用自定义逻辑挂钩调用 javascript。

        $randomNumber = rand();
        echo '<script type = "text/javascript">
        var script  = document.createElement("script");
        script.type = "text/javascript";
        script.src  = "custom/include/CustomLogicHook/clearFields.js?v=' . $randomNumber . '";
        document.body.appendChild(script);
        </script>';

还有我的自定义 JS

$("#btn_custom_city_c").attr("disabled", true);
$("#btn_custom_barangay_c").attr("disabled", true);
$('#dvt2_province_id_c').keyup(function() {
    if ($(this).val().length !=0)
        $("#btn_custom_city_c").attr("disabled", false);
    else
        $("#btn_custom_city_c").attr("disabled", true);
});

禁用/启用按钮有效,但在相关字段上不起作用。此代码仅适用于普通领域

【问题讨论】:

  • 请解释你的问题
  • 使用$('#custom_province_c').on('keypress', function()...而不是$('#custom_province_c').on('input change', function()...
  • 我认为这段代码是由生成器或其他东西生成的。正确的?真是一团糟。我将尝试为您提出的问题添加一个简单代码的答案。
  • @Mad7Dragon,谢谢兄弟。明天试试
  • @ethry,如果其中一个必填字段为空,我希望禁用某个按钮。

标签: javascript suitecrm


【解决方案1】:

我认为这段代码是由生成器或其他东西生成的。正确的?真是一团糟!

无论如何,您可以检查输入值长度是否为 == 0。无需任何 jquery。但请注意:

1- 函数在更改后离开输入后触发。

2- 空白表示输入值长度大于0

let changeListener = document.getElementById("input").addEventListener("change", function() {

    let input = document.getElementById("input");

    if (input.value.length == 0) {
        document.getElementById("btn").disabled = true;
    } else {
        document.getElementById("btn").disabled = false;
    }
})
<input type="text" id="input">
<button type="button" id="btn">button</button>

编辑:关于您的评论:

是的,您可以禁用启动按钮。只是在加载功能时禁用它。

document.getElementById("btn").disabled = true;

let changeListener = document.getElementById("input").addEventListener("change", function() {

  let input = document.getElementById("input");

  if (input.value.length == 0) {
    document.getElementById("btn").disabled = true;
  } else {
    document.getElementById("btn").disabled = false;
  }
});
<input type="text" id="input">
<button type="button" id="btn">button</button>

【讨论】:

  • 您好,页面加载后按钮可能会自动禁用,并且每次输入字段发生变化时都会触发该功能?
  • @ClintonCanarias 你的意思是你想让按钮开始禁用?是的你可以。检查答案中的更新。
  • 我能问你一件事吗。由于我不熟悉 javascript 我想问一下为什么使用 let 而不是 var?顺便说一句,我会更新我的代码。由于此修改可以添加到 SuiteCRM 上。我能够在加载屏幕时禁用该按钮。现在我的问题是我将如何启用它。
  • @ClintonCanarias 在这个简单的代码中,使用 let 或 var 并不重要。但如果代码需要一些范围规范,那么您将根据范围要求使用letvar。要了解更多关于它们之间的区别,您可以阅读here。 --- 你所说的如何启用它是什么意思?在第二个 sn-p 中,它将开始禁用,然后当用户更改输入时,如果输入为空,它将保持禁用状态,但如果输入中有值,则会启用。请尝试代码,看看它是如何工作的。
  • @Mad7Dragaon,它有点复杂,因为我要在 SuiteCRM 上实现它。我正在寻找的领域是一个隐藏的领域。这些代码仅适用于常规字段,但如果它被隐藏则不起作用。
【解决方案2】:

以防万一您使用的是 Suite CRM,我能够在我的按钮上实现我想要的行为。

我在下面添加了这段代码:

if($('#province_c').val() == " "){
    $("#btn_custom_city_c").attr('disabled', true);
}else{
    $("#btn_custom_city_c").attr('disabled', false);
}
var inputName = "input[name='province_c']";
YAHOO.util.Event.addListener(YAHOO.util.Selector.query(inputName), 'change', 
function(){
    $("#btn_custom_city_c").attr('disabled', false);
});

有关更多信息,您可以在 Suite CRM 社区查看click Here

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多