你好我试图在访问者点击“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>
答案 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>