diff --git a/components/LineEdit.qml b/components/LineEdit.qml
index 3a5c2769..9f4ad355 100644
--- a/components/LineEdit.qml
+++ b/components/LineEdit.qml
@@ -42,6 +42,7 @@ Item {
     property string placeholderColor: MoneroComponents.Style.defaultFontColor
     property real placeholderOpacity: 0.35
 
+    property alias acceptableInput: input.acceptableInput
     property alias validator: input.validator
     property alias readOnly : input.readOnly
     property alias cursorPosition: input.cursorPosition
diff --git a/components/RemoteNodeEdit.qml b/components/RemoteNodeEdit.qml
index 4b003969..52b3b46e 100644
--- a/components/RemoteNodeEdit.qml
+++ b/components/RemoteNodeEdit.qml
@@ -58,6 +58,11 @@ GridLayout {
     property bool lineEditFontBold: true
 
     signal editingFinished()
+    signal textChanged()
+
+    function isValid() {
+        return daemonAddr.text.trim().length > 0 && daemonPort.acceptableInput
+    }
 
     function getAddress() {
         return daemonAddr.text.trim() + ":" + daemonPort.text.trim()
@@ -79,6 +84,7 @@ GridLayout {
         fontBold: lineEditFontBold
         fontSize: lineEditFontSize
         onEditingFinished: root.editingFinished()
+        onTextChanged: root.textChanged()
     }
 
     LineEdit {
@@ -96,7 +102,9 @@ GridLayout {
         fontColor: lineEditFontColor
         fontBold: lineEditFontBold
         fontSize: lineEditFontSize
+        validator: IntValidator{bottom: 1; top: 65535;}
 
         onEditingFinished: root.editingFinished()
+        onTextChanged: root.textChanged()
     }
 }
diff --git a/pages/settings/SettingsNode.qml b/pages/settings/SettingsNode.qml
index b690c70e..53bfbb21 100644
--- a/pages/settings/SettingsNode.qml
+++ b/pages/settings/SettingsNode.qml
@@ -298,6 +298,9 @@ Rectangle{
                     persistentSettings.remoteNodeAddress = remoteNodeEdit.getAddress();
                     console.log("setting remote node to " + persistentSettings.remoteNodeAddress)
                 }
+                onTextChanged: {
+                    rectConnectRemote.enabled = remoteNodeEdit.isValid();
+                }
             }
 
             GridLayout {
@@ -331,7 +334,8 @@ Rectangle{
             Rectangle {
                 id: rectConnectRemote
                 Layout.topMargin: 12 * scaleRatio
-                color: MoneroComponents.Style.buttonBackgroundColorDisabled
+                enabled: remoteNodeEdit.isValid()
+                color: enabled ? MoneroComponents.Style.buttonBackgroundColor : MoneroComponents.Style.buttonBackgroundColorDisabled
                 width: btnConnectRemote.width + 40
                 height: 26
                 radius: 2
@@ -349,6 +353,7 @@ Rectangle{
 
                 MouseArea {
                     cursorShape: Qt.PointingHandCursor
+                    visible: rectConnectRemote.enabled
                     anchors.fill: parent
                     onClicked: {
                         // Update daemon login