禁用HTML表格单元格上的单击事件

时间:2015-06-15 13:31:26

标签: javascript jquery html

当单元格为空或值为零时,如何禁用单击表格单元格。 我有一张表,当我点击特定单元格时,会执行某些操作。但我希望当表具有单元格值0或空单元格

时,单击事件不起作用
$('#tablename').off('click','td').on('click', 'td', function(e) { 
    var column = e.delegateTarget.tHead.rows[0].cells[this.cellIndex];
    var row = this.parentNode.cells[1]; 

    if ($(row).text().trim() == "")
    {
        row = this.parentNode.cells[0]; 
    }

    var rowvalue = $(row).text();
    var columnvalue = $(column).text();
}

5 个答案:

答案 0 :(得分:1)

$('td').click(function(){
   var v = $(this).html();
   if( $.trim(v) != '0' && v != '' ){
      // your code
   }
});

希望这会对你有所帮助。

答案 1 :(得分:0)

尝试使用零或空字符串值映射所有dom元素,然后禁用其默认点击功能:

var duds = $('td').map(function () {
    if ($(this).html() == 0 || $(this).html() == "") {
        return $(this);
    }
});

duds.onclick(function (event) {
    event.preventDefault();
});

答案 2 :(得分:0)

这是一个例子,根据你的代码修改它:

<强> HTML:

<table>
    <tr>
        <td>Content <input type="text" class="hidden"></td>
        <td>Content <input type="text" class="hidden"></td>
    </tr>
    <tr>
        <td>Content <input type="text" class="hidden"></td>
        <td>Content <input type="text" class="hidden"></td>
    </tr>
</table>

<强> CSS:

.visible {
    display: block;
}

.hidden {
    display: none;
}

<强> JS:

var tds = $('td');

tds.click(function(){
   var thisTable = $(this).html();
   if( thisTable == '0' || thisTable  == '' ){

   var allInputs = tds.find('input');
    allInputs.removeClass('visible');
    allInputs.addClass('hidden');
}
    });

答案 3 :(得分:-1)

我不愿意给你整个解决方案但只是一个提示。您应该使用以下代码行

class VacationEntryAdmin extends Admin {

    // some 
    // content
    public function prePersist($cv)
    {
        // some 
        // content
        $validator = $this->getValidator();
        $errors = $validator->validate($employeeVacationEntry);
        if (count($errors) > 0) {
            foreach ($errors as $error) {
                $errorsString = $error->getMessage();
                $employeeName = $error->getRoot()->getEmployee()->getName();
                $this->getRequest()->getSession()->getFlashBag()->add("danger", $employeeName . ': ' . $errorsString);
            }    //I'd like to stop the persistence of all the Vacation Entry here.
        }
        $em->persist($employeeVacationEntry);
    }

}

这是内联事件处理 - 您始终可以使用jquery来避免内联事件处理 - 这对您来说也是一个很好的功课。

答案 4 :(得分:-1)

您可以使用此CSS属性

pointer-events: none;

and you can refer more in this link: