2015-11-06 44 views
-1

我有一個鏈接:帶onclick的標籤返回false;還可以點擊

<a id="trigger" href="file.pdf" onclick="return false;">Download pdf</a> 

與此Javascript:

// Check validation and enable or disable the <a> tag 
if($('#input_1').hasClass('valid')) 
{ 
    $('#trigger').prop("onclick", null);  
} 
else // disable the button 
{ 
    $('#trigger')[0].onclick = function() { return false; } 
} 

然而,當驗證失敗的按鈕仍然與

onclick="return false;" 

有人可以幫助我的工作,即使瞭解這一點以及如何有效地禁用錨標記?

更新:固定$('#trigger')[0].onclick = function() { return false; }但一旦這使它成爲錨標記按鈕仍然服務於文件下載。

+1

jQuery有沒有'onclick'方法就不會記錄點擊

  • 檢查..閱讀api事件的方法。爲什麼你首先使用內聯'onclick'? – charlietfl

  • +0

    @charlietfl woops,已更正。此外,錨點必須加載一個'onclick =「return false;'' – BenRacicot

    回答

    1

    你需要做以下操作之一:

    $('#trigger')[0].onclick = function() {return false;} 
    

    $('#trigger').click(function() {return false;}); 
    
    +0

    這是正確的,但是即使在onclick =「return false;」的情況下,點擊時仍會下載錨點組。 – BenRacicot

    1
    if($('#input_1').hasClass('valid')) 
    { 
        $('#trigger').attr("onclick", null);  
    } 
    else // disable the button 
    { 
        $('#trigger').on('click', function(e) { e.preventDefault(); }); 
    } 
    

    更好地使用.preventDefault方法。
    也只能用於表單控件的.prop方法。

    +0

    」僅對錶單控件使用.prop方法「有點誤導 - '.prop()'應該用於屬性。操作/訪問表單元素屬性是一個常見用例,但並不意味着它是* only *用例。 – JJJ

    +0

    的確,它不僅可用於表單控件,而且對於正在工作的人來說,調試更直觀。 – n1kkou

    1

    對於這樣的情況下,我喜歡讓一點點困難,爲人們繞過前置式終端安全。 (但只有一點點,但是,顯然這很容易被繞過。)

    1. 函數調用Event.preventDefault()如果沒有有效的
    2. 添加類的元素,則將無效。這個類必須pointer-events設置爲無,所以如果一個全局變量JS已經設置

    var valid = false; 
     
    
     
    $("#valid-checkbox").change(function() { 
     
        var $this = $(this), 
     
        trigger = $("#trigger"); 
     
    
     
        if ($this.is(":checked")) { 
     
        valid = true; 
     
        $this.val("valid"); 
     
        trigger.removeClass("disabled"); 
     
        } else { 
     
        valid = false; 
     
        $this.val("invalid"); 
     
        trigger.addClass("disabled"); 
     
        } 
     
    }); 
     
    
     
    $("#trigger").click(function(e) { 
     
        if (valid === false || $(this).hasClass("disabled") || $("#valid-checkbox").val() == "invalid") { 
     
        e.preventDefault(); 
     
        } 
     
    });
    .disabled { 
     
        opacity: 0.5; 
     
        pointer-events: none; 
     
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <a id="trigger" href="http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg" class="disabled" target="_blank">Download pdf</a> 
     
    
     
    <input type="checkbox" value="invalid" id="valid-checkbox"> 
     
    <label for="valid-checkbox">Valid?</label>