奇怪的页面重新加载提交或Onclick

时间:2014-11-21 12:01:06

标签: javascript

我只使用onsubmit,即使只是刷新我的网格,但我不知道页面重新加载的原因

这是我的表格行动

<form id="fff" onsubmit="return get_Search()">

这是我的搜索按钮

<li><a href="#" class="srch" onclick="get_Search()"></a></li>

我的点击活动

$j( "#PrsNo" ).keypress(function( event ) {
        if ( event.which == 13 ) {
        get_Search();
        }
    });

这是我的功能:

function get_Search()
{
    //  alert('enter');
    var PrsNo = $("#PrsNo").val();
    var PrsRequestedBy = $("#PrsRequestedBy ").val();
    var PrsDepartment = $("#PrsDepartment").val();
    var PrsTheme = $("#PrsTheme").val();
    var PrsMerchandiserName = $("#PrsMerchandiserName").val();
    var SentDate = $("#SentDate").val();
    var PrsStatus  = $("#PrsStatus").val();
    //  alert(PrsNo);
    $j('#flex1').flexOptions({newp:1, params:[{name:'searchtype', value: '1'},{name:'prsno', value: PrsNo},{name:'prsreqby',value:PrsRequestedBy},{name:'prsdepar',value:PrsDepartment},{name:'prstheme',value:PrsTheme},{name:'prsmername', value: PrsMerchandiserName},{name:'prssentdate', value: SentDate},{name:'pstatus',value:PrsStatus}]});
    $j("#flex1").flexReload();
}

但是当我按回车或点击搜索图标时,我不知道我的页面重新加载的原因。

可能是什么原因,如果需要,我将提供完整的代码

这是我的Controller

4 个答案:

答案 0 :(得分:0)

添加:

function get_Search(ev)  // ev is event applied in the context of selector.
{
   ev.preventDefault();
   // other code
}

在您的标记中,您可以将该事件作为参数传递给函数:

onsubmit="return get_Search(event)"
onclick="return get_Search(event)"

if ( event.which == 13 ) {
    get_Search(event);
}

答案 1 :(得分:0)

它重新加载,因为在表单子目录中,表单的动作会自动触发。如果您没有设置操作,则操作为空字符串,这会使您的页面重新加载。您可以通过将onsubmit更改为:

来防止这种情况发生
<form id="fff" onsubmit="event.preventDefault();return get_Search();">

答案 2 :(得分:0)

您尚未向标记提供action属性,因此w3c标准为此案例定义了默认值。重定向到当前页面。

要压制此行为,您必须将e.preventDefault()提供给已绑定eventlistener的函数

像这样:

function get_Search(event)
{ event.preventDefault() }

这将抑制分布式事件的默认行为,并且不会发生重定向

希望这有帮助

答案 3 :(得分:0)

通过.submit()方法或submit按钮点击提交表单。没有任何类型的正常<input type="submit"<button>是提交按钮 按Enter键启动implicit form submission。这将反过来触发'onsubmit'处理程序。   请注意,如果表单是通过用户操作而不是JavaScript方法提交的,则执行此处理程序。

如果onsubmit处理程序(在本例中为get_Search())返回false,则不会提交表单。在你的情况下,因为没有返回声明(暗示未定义),因此表格将被提交 同时单击锚点也不会触发任何onsubmit事件。它只会触发将执行处理程序的onclick事件。