假设我有一个表格
<form action="www.posturl.com" method="post" >
<input type="text" name="test" />
<input type="submit" />
</form>
有没有我可以在发布表单时使用javascript获取输入字段'test'?如果是,有没有办法可以阻止它并且只能POST到该操作URL?
答案 0 :(得分:0)
有人可以使用JavaScript获取数据。以下示例使用jQuery:
<script type="text/javascript">
$(function() {
$('form').on('submit', function() {
var test = $(this).find('[name="test"]').val(); // grab value of the input named 'test'
// do something with the data
});
});
</script>
如果有人控制了表单所在页面的内容,则无法阻止此操作。
您可以将表单作为iFrame提供给客户,以显示来自其他域的页面。然后,同源策略将阻止他们通过JavaScript访问表单。
答案 1 :(得分:0)
您可以使用AJAX
-
<form action="www.posturl.com" method="post" >
<input name="test" />
<input type="submit" />
</form>
<script>
$(function(){
$("form").on(submit,function(){
var form = $(this);
var action = form.attr('action');
var data = form.serialize();
$.post(action,data)
.done(function(response){
if(response.success == TRUE)
{
// If successfully submitted
}
else
{
// If not
}
});
});
});
</script>
答案 2 :(得分:0)
我不确定你为什么要这样做,
但你可以试试这个 -
您可以使用jQuery的unbind函数删除现有事件,例如:
if(user == 'admin')
{
$('#myForm').unbind('submit');
//will remove all onsubmit events from #myForm. Then you can add a new event using normal jQuery:
`$('#myForm').submit(function(e)` { /* your logic here */ });
}
所以,你可以提供这样的逻辑:如果用户是你(而不是你的客户),那么这将取消绑定现有的提交事件,使用你的javascript函数添加一个新的提交事件,而你的客户只会使用之前的提交事件,它没有提取输入字段的javascript函数