2016-02-25 37 views
1

我使用重力形成WordPress插件,我想oninput添加到我的表单标签... 我下面这个网页上的说明: https://www.gravityhelp.com/documentation/article/gform_form_tag/如何使用此示例将代码添加到JavaScript表单标记中?

然而,他们所提供的例子是用于替换的东西在表单标记中,而不是将某些内容添加到表单标记....应该如何编辑以下代码,以将oninput事件添加到标记,而不是替换标记内部的某些内容?我不知道,而不是使用pregreplace什么...

add_filter('gform_form_tag', 'form_tag', 10, 2); 
function form_tag($form_tag, $form) { 
    if ($form['id'] != 3) { 
     //not the form whose tag you want to change, return the unchanged tag 
     return $form_tag; 
    } 
    $form_tag = preg_replace("|action='(.*?)'|", "action='custom_handler.php'", $form_tag); 
    return $form_tag; 
} 

回答

1

好了,我们这里有XY Problem的经典案例。您在问如何更改标签以包含oninput属性,但是您确实在尝试完成其他功能。

所以,首先我会直接回答你的问题:

add_filter('gform_form_tag', 'form_tag', 10, 2); 
function form_tag($form_tag, $form) { 
    if ($form['id'] != 3) { 
     //not the form whose tag you want to change, return the unchanged tag 
     return $form_tag; 
    } 
    // We know the form has the 'form ' in it, so replace that with 'form' plus the oninput you want 
    $form_tag = str_ireplace("<form ", "<form oninput='myFunction() ", $form_tag); 
    return $form_tag; 
} 

不过说真的,有可能是一个更好/更简单的方法。

写一些JavaScript - 因为你清楚要使用的JavaScript - 与形式连接:

// Since WordPress loads jQuery in no-conflict mode, this is the preferred "document ready" 
jQuery(function($) { 
    // "gform_3" represents the form you want to target. 
    $('#gform_3 input, #gform_3 textarea').on('change', function() { 
     // Do your "oninput" work here 
    } 
}); 

只需更改ID来匹配你要定位的形式的ID - 如果你的例如,表单是ID 23,然后使其成为​​。

+0

谢谢你这么多的详细答复。真的很感激它。你的第一个解决方案是完美的,但是,我不确定最后一个......如何开始我的输入代码....我会litterally只是取代“/ /你的'oninput'在这里工作”与代码这意味着在ininput属性的双引号内?所以我应该只添加例如:“amount.value = rangeInput.value;”还是我必须开始与其他事情? – Shtarley

0

我同意Cale的简单答案;但是,在某些情况下,您仍然可能要将事件属性(任何事件属性)放在<表单上。这是一个非常简单的插件。

http://gravitywiz.com/gravity-forms-tag-editor/

用法示例:

new GW_Tag_Editor(array(
    'tag'   => 'form', 
    'form_id'  => 123, 
    'oninput'  => 'myFunction()' 
)); 
相关问题