Jquery点击值检查不起作用

时间:2017-07-21 11:24:50

标签: php jquery

我有一个函数,点击添加/删除SQL数据库中的内容。

我做了一个条件来检查它是否引用了添加或删除并执行代码。

添加功能完美无缺,但删除不及其相同的代码,我错过了一些明显的东西吗?这是最好的方法吗?

jquery的:

//add card from list
$("#listcards a").click(function() {
    if($(this).attr('add').length > 1) {
      var value = $(this).attr('add');
      $.post('searchc.php',{add:value}, function(data){
         $("#add_result").html(data);
       });
       return false;
    }
});

//remove card from list
$("#listcards a").click(function() {
    if($(this).attr('rem').length > 1) {
      var value = $(this).attr('rem');
      $.post('searchc.php',{rem:value}, function(data){
         $("#add_result").html(data);
       });
       return false;
    }
});

html代码:

<form id="listcards" method="post">
    <input type='hidden' id='lcard' name='lcard' value=''>
    <div>
        bla bla -> imagem no + ? ou por algum efeito css<a href="" add="bla bla">+</a> | <a href="" rem="bla bla">-</a><br>
        coiso coiso <a href="" add="coiso coiso">+</a> | <a href="" rem="coiso coiso">-</a><br>
    </div>
</form>

我是否也需要处于POST的表格中,否则div也会起作用?

5 个答案:

答案 0 :(得分:2)

您有两个针对相同元素的点击处理程序,这可能会导致问题。您不需要为每个<a>元素运行两组代码。而是为元素提供一个类来准确显示它们的作用,然后将选择器限制为这些元素

HTML:

<a href="" class="add" add="bla bla">+</a> | <a href="" class="remove" rem="bla bla">

脚本:

$("#listcards a.add").click(function() {
  var value = $(this).attr('add');
  $.post('searchc.php',{add:value}, function(data){
    $("#add_result").html(data);
  });
  return false;
});

//remove card from list
$("#listcards a.remove").click(function() {
  var value = $(this).attr('rem');
  $.post('searchc.php',{rem:value}, function(data){
     $("#add_result").html(data);
  });
  return false;
});

答案 1 :(得分:2)

你可以像这样使用它只会删除功能。并且可以添加ajax。

$("#listcards .rem").click(function() {
    var value = $(this).text();
    if($(this).length()>1) { 
    $.post('searchc.php',{rem:value}, function(data){
         $("#add_result").html(data);
       });
   return false;
}});

答案 2 :(得分:2)

假设您第一次加载此页面时没有任何卡片。然后点击添加新&amp;一张新卡已添加到您的HTML中。 现在,对于这个新添加的卡,&#34;删除&#34;方法不会在页面加载时加载绑定(当此新卡元素不存在时)。因此,您的删除方法不适用于新添加的卡。

所以为了使它工作,你需要在新卡上使用删除方法。你可以通过让你删除你要调用的js函数中的部分来做到这一点&#34;添加&#34;将新卡放入html后的一部分。

function removeCard(){

// first unbind the click event for all cards if any & then bind it

  $("#listcards a").off('click'); 

//remove card from list

 $("#listcards a").click(function() {

    if($(this).attr('rem').length > 1) {
      var value = $(this).attr('rem');
      $.post('searchc.php',{rem:value}, function(data){
         $("#add_result").html(data);
       });
       return false;
    }
  });
}

And you add part should be like this:
//add card from list
$("#listcards a").click(function() {
    if($(this).attr('add').length > 1) {
      var value = $(this).attr('add');
      $.post('searchc.php',{add:value}, function(data){
         $("#add_result").html(data);
         removeCard(); // adding remove method here
       });
       return false;
    }
});

答案 3 :(得分:1)

跟进你的代码,

private static String sanitizeInputForCSVOpti1b(final String inputCSVRow) {
        StringBuilder outputCSVRow = new StringBuilder(inputCSVRow);
        outputCSVRow = escapeMacroTriggersFromCSVOpti1b(outputCSVRow, '=');
        outputCSVRow = escapeMacroTriggersFromCSVOpti1b(outputCSVRow, '-');
        outputCSVRow = escapeMacroTriggersFromCSVOpti1b(outputCSVRow, '+');
        outputCSVRow = escapeMacroTriggersFromCSVOpti1b(outputCSVRow, '@');
        return outputCSVRow.toString();
    }

private static StringBuilder escapeMacroTriggersFromCSVOpti1b(StringBuilder inputRow, char characterToEscape) {
    StringBuilder outputRow;

    if (inputRow.length() == 0 || (inputRow.length() == 1 && inputRow.charAt(0) != characterToEscape)) {
        outputRow = inputRow;
    } else if (inputRow.length() == 1 && inputRow.charAt(0) == characterToEscape) {
        outputRow = new StringBuilder().append(' ').append(inputRow);
    } else {
        outputRow = new StringBuilder();

        // To replace the first ocurrance
        final char firstCharacter = inputRow.charAt(0);
        final char secondCharacter = inputRow.charAt(1);
        if (firstCharacter == '\"' && secondCharacter == characterToEscape) {
            outputRow.append(firstCharacter).append(' ').append(secondCharacter);
        } else if (firstCharacter == characterToEscape) {
            outputRow.append(' ').append(firstCharacter).append(secondCharacter);
        } else {
            outputRow.append(firstCharacter).append(secondCharacter);
        }

        // To replace subsequent ocurrance
        for (int i = 2; i < inputRow.length(); i++) {
            if (inputRow.charAt(i) != characterToEscape) {
                outputRow.append(inputRow.charAt(i));
            } else if ((inputRow.charAt(i - 1) == '\"' && inputRow.charAt(i - 2) == ',') || inputRow.charAt(i - 1) == ',') {
                outputRow.append(' ').append(inputRow.charAt(i));
            }
        }
    }
    return outputRow;
}

答案 4 :(得分:0)

使用onclick功能执行此操作 它可以帮助你

<a href="" add="coiso coiso" onclick="addthis('coiso coiso');">+</a>
<a href="" rem="coiso coiso" onclick="removethis('coiso coiso');">-</a><br>


function addthis(addthis) {
    if(addthis.length > 1) {
       alert(addthis);
    // $.post('searchc.php',{add:addthis}, function(data){
    //      $("#add_result").html(data);
    //    });
       return false;
    }
}

function removethis(remthis) {
    if(remthis.length > 1) {
       alert(remthis);
    // $.post('searchc.php',{reb:remthis}, function(data){
    //      $("#add_result").html(data);
    //    });
       return false;
    }
}