0

我已经完成了大部分工作。我正在尝试根据选择的单选按钮切换显示的 div,这很有效。此外,我根据其可见性切换隐藏输入(名称=martygeocoderlatlngonly)的禁用属性,也可以。

但是,我正在努力将最初可见的输入(名称=martygeocoderlatlngonly)从只读切换到禁用,然后再切换回来,因为它被带入和失焦。

HTML:

 <p>Modify:
    <label>
        <input id="rdb1" type="radio" name="toggler" value="1" checked />Location</label>
    <label>
        <input id="rdb2" type="radio" name="toggler" value="2" />Lat/Lng</label>
</p>
<div id="blk-1" class="toHide" style="">
    <p>
        <label for="martygeocoderaddress">Address</label>
        <br />
        <input class="widefat" type="text" name="martygeocoderaddress" id="martygeocoderaddress" value="" size="30" />
    </p>
    <p>
        <label for="martygeocoderlatlng">Lat/Lng</label>
        <br />
        <input class="widefat" type="text" name="martygeocoderlatlng" id="martygeocoderlatlng" value="" size="30" readonly />
    </p>
</div>
<div id="blk-2" class="toHide" style="display:none;">
    <p>
        <label for="martygeocoderlatlng">Lat/Lng</label>
        <br />
        <input class="widefat" type="text" name="martygeocoderlatlngonly" id="martygeocoderlatlng" value="" size="30" disabled/>
    </p>
</div>

查询:

// Toggle display of fields
$("[name=toggler]").click(function () {
    //$('.toHide').hide();
    $("#blk-" + $(this).val()).each(function () {
        //$(this).show();
    });
    $(":input[name='martygeocoderlatlngonly']").each(function () {
        this.disabled = !this.disabled;
    });
    $(":input[name='martygeocoderlatlng']").each(function () {
        if (this.readOnly = true) {
            this.readOnly = false;
            this.disabled = true;
        } else {
            this.readOnly = true;
            this.disabled = false;
        }
    });
});

我曾经使用 php 进行开发,但从未接触过 oop,所以 jquery 和 javascript 让我有点抓狂。

#

解决方案:

$("[name=toggler]").click(function () {
    $('.toHide').hide();
    $("#blk-" + $(this).val()).each(function () {
        $(this).show();
    });
    $(":input[name='martygeocoderlatlngonly']").each(function () {
        this.disabled = !this.disabled;
    });
    $(":input[name='martygeocoderlatlng']").each(function () {
        this.readOnly = !this.readOnly;
        this.disabled = !this.disabled;
    });
});
4

2 回答 2

0
    if (this.readOnly = true) {

应该

    if (this.readOnly == true) {

常见的错误 :)

于 2013-04-15T19:59:06.763 回答
0

this.readOnly = true设置this.readOnlytrue。你想比较它,所以使用两个等号:

if (this.readOnly == true)

或者完全省略右侧:

if (this.readOnly)
于 2013-04-15T19:59:08.683 回答