【问题标题】:Form Hidden Field Substitution形成隐藏字段替换
【发布时间】:2012-04-24 15:17:08
【问题描述】:

我正在使用 Expression Engine 的 Safecracker 模块构建一个表单。

必填字段之一是标题,它成为 EE 频道条目的标题。

我想做的是将 Title 字段设置为组合的名字和姓氏字段。

我是从这个开始的:

<form method="POST" action="#">

<input id="student_first_name" type="text" size="30" name="student_first_name"> 
<br>
<input id="student_last_name" type="text" size="30" name="student_last_name"> 
<br><br>
<input type="text" name="title" value=""/> 

</form>

然后添加了这个:

$(function() {
    $('#student_first_name').keyup(function() {
        var snamef = $(this);
    });
    $('#student_last_name').keyup(function() {
        var snamel = $(this);
    });
    $("input[name='title']").val(snamel + " " + snamef);
    return false;
});​

​但我无法让它工作:http://jsfiddle.net/tylonius/CY5zJ/4/

我错过了一步(还是完全做错了?)?

另外,是不是我工作太努力了,Safecracker 已经内置了这个功能;类似于它的直播 UrlTitle();功能?

感谢任何帮助。

谢谢,

ty

【问题讨论】:

  • 先在你的输入元素上设置一个id,然后使用@user1236048的方法

标签: javascript forms expressionengine hidden-field safecracker


【解决方案1】:

如果我理解你的问题,试试这个:

首先在您想要的输入元素上设置一个 id,如下所示:

<input type="text" name="title" id="student_title" value=""/>

然后:

$(function() {  
    changeFunction = function() {
        $('#student_title').val($('#student_first_name').val() + ' ' + $("#student_last_name").val());
    }

    $('#student_first_name').keyup(changeFunction)
    $('#student_last_name').keyup(changeFunction);   
});

【讨论】:

  • 太棒了!它工作得很好,而且比我最初的方法简单得多。非常感谢!
  • 您可以通过将两个 keyup 侦听器组合在一行中来简化此操作,如下所示:$('#student_first_name, #student_last_name').keyup(changeFunction);
【解决方案2】:

更好的是,完全避免使用 javascript,而只使用 SafeCracker 的 dynamic_title parameter

dynamic_title="[student_first_name] [student_last_name]"

【讨论】:

  • 噢!我偷偷地怀疑我遗漏了一些明显的东西。
【解决方案3】:

user1236048 为您提供最佳解决方案,但以下是您的代码的工作版本

$(function() {

    var snamef;
    var snamel;

    $('#student_first_name').keyup(function() {
         snamef = $(this).val();
         $("input[name='title']").val(snamel + " " + snamef);
    });
    $('#student_last_name').keyup(function() {
         snamel = $(this).val();
         $("input[name='title']").val(snamel + " " + snamef);
    });
    return false;
});

here 是工作的 jsfiddle

【讨论】:

  • 我更喜欢简化版,但也谢谢你;它说明了我最初的错误。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多