检测用户点击HTML表格TD,并获取值

时间:2016-03-12 21:29:34

标签: javascript php jquery html

你好我试图在访问者点击“td”时发布一些数据

这是代码

<form method="post" name="randoms">
<tr><td value="1" name="somedata">Click me 1</td></tr>
<tr><td value="2" name="somedata">Click me 1</td></tr>
<tr><td value="3" name="somedata">Click me 1</td></tr>
<tr><td value="4" name="somedata">Click me 1</td></tr>
</form>

Soo我想要的是,如果访问者点击“Click me 1”,它会发布表单,然后我就可以抓住somedata whit php了。

<?php
$somedata = $_POST["somedata"];
?>

香港专业教育学院试图解决这个问题已经有一段时间了,但我无法找到办法做到这一点,我很确定有很多方法可以做到这一点,我只是没有找到其中一种方式。

我试过这个javascript。

<script type="text/javascript">
function submitForm(sub) {
document.forms[sub].submit();
}
</script>

然后我试图使用

<a HREF="#" onClick="submitForm('randoms')"> Somedata1 </a>

4 个答案:

答案 0 :(得分:3)

如上所述,您的表格格式不正确,添加开始和结束标记

将您的表单命名为withban id或class mylist = [(7, 36), (8, 36), (9, 36), (12, 36), (13, 37), (15, 37), (23, 37), (65, 78)] get2item = lambda x: x[1] mylist.sort(key = get2item) newlist = [] while mylist: enditem = get2item(mylist[-1]) endlist = filter(lambda x: get2item(x)==enditem, mylist) mylist[-len(endlist):] = [] endlist.sort(key = lambda x: x[0]) newlist.append(endlist[-1]) print newlist

在td上使用数据属性

<form id="myForm"... >

在表单中添加2个隐藏的输入fieod:

<td data-id="1" data-some-data="somename">

尝试类似

的内容
<input type="hidden" id="myId" >
<input type="hidden" id="somedata" >    

当然还有表格动作网址。

如果你真的想要安全检查数据是否属于attr。像

一样存在
$( "#myForm td" ).click(function() {
  $('#myId").val($(this).data('id'));
  $('#somedata").val($(this).data('someData'));
  $( "#myForm" ).submit();
});

好的,如果你想点击特定的td为他们添加一个类,如

if ($(this).data().hasOwnProperty( 'someData') )  { //do stuff } 

修改

<td class="clickable"...... 

 $( "#myForm td" ).click(function() 

答案 1 :(得分:1)

您无法将value属性放入td,但您可以使用id属性执行类似操作。以下是一个可能有用的完整示例:

<?php
    if ( isset($_POST['newdata']) ){
        $val = $_POST['newdata'];
        echo 'Received value: ' .$val;
        die();
    }else{

?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
    $(function(){
        $('td').click(function(){
            alert(this.id);
            var myTD = this.id.split('_')[1];
            var newFrm = '<form id="myNewForm"><input name="newdata" value="' +myTD+ '" /></form>';
            $('body').append(newFrm);
            $('#myNewForm').submit();
        });
    });
</script>
<style>
    td{padding:3px 7px;border:1px solid #bbb;}
</style>
<form method="post">
    <table>
        <tr><td id="td_1">Click me 1</td></tr>
        <tr><td id="td_2">Click me 2</td></tr>
        <tr><td id="td_3">Click me 3</td></tr>
        <tr><td id="td_4">Click me 4</td></tr>
    </table>
</form>

<?php
    }
?>

如果您想在幕后发布数据(可能更新数据库),请使用AJAX。请参阅本文中的简单示例,了解它是多么容易:

AJAX request callback using jQuery

要回答您的评论问题:为了限制哪些TD为clickable,请将类添加到您想要“可点击”的类中,并使用该类检测用户点击:

<form method="post" name="randoms">
    <tr><td value="1">Cant click me 1</td></tr>
    <tr><td value="2" class="clickme">Click me 2</td></tr>
    <tr><td value="3" class="clickme">Click me 3</td></tr>
    <tr><td value="4">Cant click me 4</td></tr>
</form>

<script>
    $(function(){
        $('.clickme').click(function(){
            alert(this.id);
        });
    });
</script>

您可能已经知道这一点,但对于未来的读者:请注意.,这意味着“class =”。 id属性由#表示。当您在jQuery选择器 $('.clickme').click()中使用类名时,会监视该类的每个元素。但ID必须是唯一的 - 每页只有一个元素可以具有该特定ID。如果多个元素具有相同的ID,则会发生可怕的事情:地震,饥荒,海啸,不可预测的代码结果。不要去那里。

答案 2 :(得分:0)

表数据单元格不是表单控件。使用表单控件。

<button type="submit" value="1" name="somedata"> Click me 1 </button>

根本不需要JS。

如果你有表格数据(它看起来不像你那样),那么你可以把按钮放在一个电话中,但请注意<tr>元素不能是<form>的子元素元件。

答案 3 :(得分:0)

正如Quention所说,表数据单元格不是表单控件。 如果你想使用AJAX并拥有td的可点击性,你可以做这样的事情。

<script type="text/javascript">
    var tds = document.getElementsByTagName('td');
    tds.addEventListener('click', function() {
            // DO XHR Request
    });
</script>

<form>
<table>
<tr><td><input type="hidden" name="somename" />Click me 1</td></tr>
<tr><td><input type="hidden" name="somename" />Click me 1</td></tr>
<tr><td><input type="hidden" name="somename" />Click me 1</td></tr>
<tr><td><input type="hidden" name="somename" />Click me 1</td></tr>
</table>
</form> 
相关问题