删除/删除部分隐藏字段值的按钮单击

Remove/delete part of hidden field value on button click

本文关键字:按钮 单击 字段 隐藏 删除部 删除      更新时间:2023-09-26

我试图建立一个表单,用户可以使用选择框添加课程。

添加球场时,它创建一个新的表行,向用户显示球场,并将球场前缀和编号(例如MATH120)添加到隐藏的表单字段值中。最后,它添加了一个删除按钮。

delete按钮应该删除表行和与被删除的球场对应的隐藏输入值。

这是我的jsfiddle: http://jsfiddle.net/MtJF2/10/

我的脚本删除行只是很好,但它没有正确地删除输入值。它不会抛出任何错误。有时我注意到它会删除正确值中的零(例如MATH120变成MATH12)。你知道是什么原因造成的吗?

HTML:

<script type="text/javascript">
    function deleteCourse($course){
    $('#' + $course).remove();
    $course = $course + ','
    alert($course);
    $('#required-courses').val(function($course, value) {
   return value.replace($course, '');
});
}
</script>
<table width="80%" align="center">
    <tr id="add-required-course">
        <td><input type="button" value="+ Add a Required Course" class="MC-big-button" onclick="$('#course-menu').slideToggle()" /></td>
    </tr>
</table> 
<input type="hidden" id="required-courses" name="required-courses" value="null" />
<table id="course-menu" width="80%" align="center">
    <tr>
        <td>Select the course prefix:</td>
        <td><select id="1" name="course-prefix">
                <option value="MATH">MATH</option>
                <option value="BIOL">BIOL</option>
            </select>
        </td>
    </tr>
    <tr>
        <td>Select the course number:</td>
        <td><select id="2" name="course-num">
            <option value="101">101</option>
            <option value="120">120</option>
            </select>
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="button" value="Add this course" class="MC-big-button" id="save-course" />
        </td>
    </tr>
</table>
Javascript:

document.getElementById("save-course").onclick = buildCourse;
function buildCourse() {
    var $coursePrefix = ($('#1').val());
    var $courseNum = ($('#2').val());
    var $course = $coursePrefix + $courseNum;
    var $HTMLoutput = '<tr id="' + $course + '"><td>' + $course + '<input type="button" value="Delete" onclick="deleteCourse(''' + $course + ''')" /></td></tr>';
    var $VALUEoutput = ($('#required-courses').val());
    if ($VALUEoutput == 'null') {
        $VALUEoutput = $course + ',';
    }
    else {
         $VALUEoutput = $VALUEoutput + $course + ',';
    }
    $('#course-menu').slideToggle();
    $('#add-required-course').before($HTMLoutput);
    $('#required-courses').val($VALUEoutput);    
}

我发现这个问题很有帮助,但是我认为我的实现是错误的。

您将在

处的delete函数中用新值替换$course
$('#required-courses').val(function($course, value) { 
// here it gets a new value which is wrong

像这样使用

function deleteCourse($course){
    $('#' + $course).remove();
    $course = $course + ','
    alert($course);
    $('#required-courses').val(function(_, value) {
            return value.replace($course, '');
    });
}